High performance interconnect physical layer

ABSTRACT

A periodic control window is embedded in a link layer data stream to be sent over a serial data link, where the control window is configured to provide physical layer information including information for use in initiating state transitions on the data link. The link layer data can be sent during a link transmitting state of the data link and the control window can interrupt the sending of flits. In one aspect, the information includes link width transition data indicating an attempt to change the number of active lanes on the link.

FIELD

The present disclosure relates in general to the field of computerdevelopment, and more specifically, to software development involvingcoordination of mutually-dependent constrained systems.

BACKGROUND

Advances in semi-conductor processing and logic design have permitted anincrease in the amount of logic that may be present on integratedcircuit devices. As a corollary, computer system configurations haveevolved from a single or multiple integrated circuits in a system tomultiple cores, multiple hardware threads, and multiple logicalprocessors present on individual integrated circuits, as well as otherinterfaces integrated within such processors. A processor or integratedcircuit typically comprises a single physical processor die, where theprocessor die may include any number of cores, hardware threads, logicalprocessors, interfaces, memory, controller hubs, etc.

As a result of the greater ability to fit more processing power insmaller packages, smaller computing devices have increased inpopularity. Smartphones, tablets, ultrathin notebooks, and other userequipment have grown exponentially. However, these smaller devices arereliant on servers both for data storage and complex processing thatexceeds the form factor. Consequently, the demand in thehigh-performance computing market (i.e. server space) has alsoincreased. For instance, in modern servers, there is typically not onlya single processor with multiple cores, but also multiple physicalprocessors (also referred to as multiple sockets) to increase thecomputing power. But as the processing power grows along with the numberof devices in a computing system, the communication between sockets andother devices becomes more critical.

In fact, interconnects have grown from more traditional multi-drop busesthat primarily handled electrical communications to full blowninterconnect architectures that facilitate fast communication.Unfortunately, as the demand for future processors to consume at evenhigher-rates corresponding demand is placed on the capabilities ofexisting interconnect architectures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified block diagram of a system including aserial point-to-point interconnect to connect I/O devices in a computersystem in accordance with one embodiment;

FIG. 2 illustrates a simplified block diagram of a layered protocolstack in accordance with one embodiment;

FIG. 3 illustrates an embodiment of a transaction descriptor.

FIG. 4 illustrates an embodiment of a serial point-to-point link.

FIG. 5 illustrates embodiments of potential High PerformanceInterconnect (HPI) system configurations.

FIG. 6 illustrates an embodiment of a layered protocol stack associatedwith HPI.

FIG. 7 illustrates a representation of an example state machine.

FIG. 8 illustrates example control supersequences.

FIG. 9 illustrates a representation of an example control windowembedded in a data stream.

FIG. 10 illustrates a flow diagram of an example handshake.

FIG. 11 illustrates a flow diagram of an example transition to a partialwidth state.

FIG. 12 illustrates an example transition from a partial width state.

FIG. 13 illustrates an embodiment of a block diagram for a computingsystem including a multicore processor.

FIG. 14 illustrates another embodiment of a block diagram for acomputing system including a multicore processor.

FIG. 15 illustrates an embodiment of a block diagram for a processor.

FIG. 16 illustrates another embodiment of a block diagram for acomputing system including a processor.

FIG. 17 illustrates an embodiment of a block for a computing systemincluding multiple processor sockets.

FIG. 18 illustrates another embodiment of a block diagram for acomputing system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth,such as examples of specific types of processors and systemconfigurations, specific hardware structures, specific architectural andmicro architectural details, specific register configurations, specificinstruction types, specific system components, specific processorpipeline stages, specific interconnect layers, specificpacket/transaction configurations, specific transaction names, specificprotocol exchanges, specific link widths, specific implementations, andoperation etc. in order to provide a thorough understanding of thepresent invention. It may be apparent, however, to one skilled in theart that these specific details need not necessarily be employed topractice the subject matter of the present disclosure. In otherinstances, well detailed description of known components or methods hasbeen avoided, such as specific and alternative processor architectures,specific logic circuits/code for described algorithms, specific firmwarecode, low-level interconnect operation, specific logic configurations,specific manufacturing techniques and materials, specific compilerimplementations, specific expression of algorithms in code, specificpower down and gating techniques/logic and other specific operationaldetails of computer system in order to avoid unnecessarily obscuring thepresent disclosure.

Although the following embodiments may be described with reference toenergy conservation, energy efficiency, processing efficiency, and so onin specific integrated circuits, such as in computing platforms ormicroprocessors, other embodiments are applicable to other types ofintegrated circuits and logic devices. Similar techniques and teachingsof embodiments described herein may be applied to other types ofcircuits or semiconductor devices that may also benefit from suchfeatures. For example, the disclosed embodiments are not limited toserver computer system, desktop computer systems, laptops, Ultrabooks™,but may be also used in other devices, such as handheld devices,smartphones, tablets, other thin notebooks, systems on a chip (SOC)devices, and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Here, similartechniques for a high-performance interconnect may be applied toincrease performance (or even save power) in a low power interconnect.Embedded applications typically include a microcontroller, a digitalsignal processor (DSP), a system on a chip, network computers (NetPC),set-top boxes, network hubs, wide area network (WAN) switches, or anyother system that can perform the functions and operations taught below.Moreover, the apparatus', methods, and systems described herein are notlimited to physical computing devices, but may also relate to softwareoptimizations for energy conservation and efficiency. As may becomereadily apparent in the description below, the embodiments of methods,apparatus', and systems described herein (whether in reference tohardware, firmware, software, or a combination thereof) may beconsidered vital to a “green technology” future balanced withperformance considerations.

As computing systems are advancing, the components therein are becomingmore complex. The interconnect architecture to couple and communicatebetween the components has also increased in complexity to ensurebandwidth demand is met for optimal component operation. Furthermore,different market segments demand different aspects of interconnectarchitectures to suit the respective market. For example, serversrequire higher performance, while the mobile ecosystem is sometimes ableto sacrifice overall performance for power savings. Yet, it is asingular purpose of most fabrics to provide highest possible performancewith maximum power saving. Further, a variety of different interconnectscan potentially benefit from subject matter described herein.

The Peripheral Component Interconnect (PCI) Express (PCIe) interconnectfabric architecture and QuickPath Interconnect (QPI) fabricarchitecture, among other examples, can potentially be improvedaccording to one or more principles described herein, among otherexamples. For instance, a primary goal of PCIe is to enable componentsand devices from different vendors to inter-operate in an openarchitecture, spanning multiple market segments; Clients (Desktops andMobile), Servers (Standard and Enterprise), and Embedded andCommunication devices. PCI Express is a high performance, generalpurpose I/O interconnect defined for a wide variety of future computingand communication platforms. Some PCI attributes, such as its usagemodel, load-store architecture, and software interfaces, have beenmaintained through its revisions, whereas previous parallel busimplementations have been replaced by a highly scalable, fully serialinterface. The more recent versions of PCI Express take advantage ofadvances in point-to-point interconnects, Switch-based technology, andpacketized protocol to deliver new levels of performance and features.Power Management, Quality Of Service (QoS), Hot-Plug/Hot-Swap support,Data Integrity, and Error Handling are among some of the advancedfeatures supported by PCI Express. Although the primary discussionherein is in reference to a new high-performance interconnect (HPI)architecture, aspects of the invention described herein may be appliedto other interconnect architectures, such as a PCIe-compliantarchitecture, a QPI-compliant architecture, a MIPI compliantarchitecture, a high-performance architecture, or other knowninterconnect architecture.

Referring to FIG. 1, an embodiment of a fabric composed ofpoint-to-point Links that interconnect a set of components isillustrated. System 100 includes processor 105 and system memory 110coupled to controller hub 115. Processor 105 can include any processingelement, such as a microprocessor, a host processor, an embeddedprocessor, a co-processor, or other processor. Processor 105 is coupledto controller hub 115 through front-side bus (FSB) 106. In oneembodiment, FSB 106 is a serial point-to-point interconnect as describedbelow. In another embodiment, link 106 includes a serial, differentialinterconnect architecture that is compliant with different interconnectstandard.

System memory 110 includes any memory device, such as random accessmemory (RAM), non-volatile (NV) memory, or other memory accessible bydevices in system 100. System memory 110 is coupled to controller hub115 through memory interface 116. Examples of a memory interface includea double-data rate (DDR) memory interface, a dual-channel DDR memoryinterface, and a dynamic RAM (DRAM) memory interface.

In one embodiment, controller hub 115 can include a root hub, rootcomplex, or root controller, such as in a PCIe interconnectionhierarchy. Examples of controller hub 115 include a chipset, a memorycontroller hub (MCH), a northbridge, an interconnect controller hub(ICH) a southbridge, and a root controller/hub. Often the term chipsetrefers to two physically separate controller hubs, e.g., a memorycontroller hub (MCH) coupled to an interconnect controller hub (ICH).Note that current systems often include the MCH integrated withprocessor 105, while controller 115 is to communicate with I/O devices,in a similar manner as described below. In some embodiments,peer-to-peer routing is optionally supported through root complex 115.

Here, controller hub 115 is coupled to switch/bridge 120 through seriallink 119. Input/output modules 117 and 121, which may also be referredto as interfaces/ports 117 and 121, can include/implement a layeredprotocol stack to provide communication between controller hub 115 andswitch 120. In one embodiment, multiple devices are capable of beingcoupled to switch 120.

Switch/bridge 120 routes packets/messages from device 125 upstream, i.e.up a hierarchy towards a root complex, to controller hub 115 anddownstream, i.e. down a hierarchy away from a root controller, fromprocessor 105 or system memory 110 to device 125. Switch 120, in oneembodiment, is referred to as a logical assembly of multiple virtualPCI-to-PCI bridge devices. Device 125 includes any internal or externaldevice or component to be coupled to an electronic system, such as anI/O device, a Network Interface Controller (NIC), an add-in card, anaudio processor, a network processor, a hard-drive, a storage device, aCD/DVD ROM, a monitor, a printer, a mouse, a keyboard, a router, aportable storage device, a Firewire device, a Universal Serial Bus (USB)device, a scanner, and other input/output devices. Often in the PCIevernacular, such as device, is referred to as an endpoint. Although notspecifically shown, device 125 may include a bridge (e.g., a PCIe toPCI/PCI-X bridge) to support legacy or other versions of devices orinterconnect fabrics supported by such devices.

Graphics accelerator 130 can also be coupled to controller hub 115through serial link 132. In one embodiment, graphics accelerator 130 iscoupled to an MCH, which is coupled to an ICH. Switch 120, andaccordingly I/O device 125, is then coupled to the ICH. I/O modules 131and 118 are also to implement a layered protocol stack to communicatebetween graphics accelerator 130 and controller hub 115. Similar to theMCH discussion above, a graphics controller or the graphics accelerator130 itself may be integrated in processor 105.

Turning to FIG. 2 an embodiment of a layered protocol stack isillustrated. Layered protocol stack 200 can includes any form of alayered communication stack, such as a QPI stack, a PCIe stack, a nextgeneration high performance computing interconnect (HPI) stack, or otherlayered stack. In one embodiment, protocol stack 200 can includetransaction layer 205, link layer 210, and physical layer 220. Aninterface, such as interfaces 117, 118, 121, 122, 126, and 131 in FIG.1, may be represented as communication protocol stack 200.Representation as a communication protocol stack may also be referred toas a module or interface implementing/including a protocol stack.

Packets can be used to communicate information between components.Packets can be formed in the Transaction Layer 205 and Data Link Layer210 to carry the information from the transmitting component to thereceiving component. As the transmitted packets flow through the otherlayers, they are extended with additional information used to handlepackets at those layers. At the receiving side the reverse processoccurs and packets get transformed from their Physical Layer 220representation to the Data Link Layer 210 representation and finally(for Transaction Layer Packets) to the form that can be processed by theTransaction Layer 205 of the receiving device.

In one embodiment, transaction layer 205 can provide an interfacebetween a device's processing core and the interconnect architecture,such as Data Link Layer 210 and Physical Layer 220. In this regard, aprimary responsibility of the transaction layer 205 can include theassembly and disassembly of packets (i.e., transaction layer packets, orTLPs). The translation layer 205 can also manage credit-based flowcontrol for TLPs. In some implementations, split transactions can beutilized, i.e., transactions with request and response separated bytime, allowing a link to carry other traffic while the target devicegathers data for the response, among other examples.

Credit-based flow control can be used to realize virtual channels andnetworks utilizing the interconnect fabric. In one example, a device canadvertise an initial amount of credits for each of the receive buffersin Transaction Layer 205. An external device at the opposite end of thelink, such as controller hub 115 in FIG. 1, can count the number ofcredits consumed by each TLP. A transaction may be transmitted if thetransaction does not exceed a credit limit. Upon receiving a response anamount of credit is restored. One example of an advantage of such acredit scheme is that the latency of credit return does not affectperformance, provided that the credit limit is not encountered, amongother potential advantages.

In one embodiment, four transaction address spaces can include aconfiguration address space, a memory address space, an input/outputaddress space, and a message address space. Memory space transactionsinclude one or more of read requests and write requests to transfer datato/from a memory-mapped location. In one embodiment, memory spacetransactions are capable of using two different address formats, e.g., ashort address format, such as a 32-bit address, or a long addressformat, such as 64-bit address. Configuration space transactions can beused to access configuration space of various devices connected to theinterconnect. Transactions to the configuration space can include readrequests and write requests. Message space transactions (or, simplymessages) can also be defined to support in-band communication betweeninterconnect agents. Therefore, in one example embodiment, transactionlayer 205 can assemble packet header/payload 206.

Quickly referring to FIG. 3, an example embodiment of a transactionlayer packet descriptor is illustrated. In one embodiment, transactiondescriptor 300 can be a mechanism for carrying transaction information.In this regard, transaction descriptor 300 supports identification oftransactions in a system. Other potential uses include trackingmodifications of default transaction ordering and association oftransaction with channels. For instance, transaction descriptor 300 caninclude global identifier field 302, attributes field 304 and channelidentifier field 306. In the illustrated example, global identifierfield 302 is depicted comprising local transaction identifier field 308and source identifier field 310. In one embodiment, global transactionidentifier 302 is unique for all outstanding requests.

According to one implementation, local transaction identifier field 308is a field generated by a requesting agent, and can be unique for alloutstanding requests that require a completion for that requestingagent. Furthermore, in this example, source identifier 310 uniquelyidentifies the requestor agent within an interconnect hierarchy.Accordingly, together with source ID 310, local transaction identifier308 field provides global identification of a transaction within ahierarchy domain.

Attributes field 304 specifies characteristics and relationships of thetransaction. In this regard, attributes field 304 is potentially used toprovide additional information that allows modification of the defaulthandling of transactions. In one embodiment, attributes field 304includes priority field 312, reserved field 314, ordering field 316, andno-snoop field 318. Here, priority sub-field 312 may be modified by aninitiator to assign a priority to the transaction. Reserved attributefield 314 is left reserved for future, or vendor-defined usage. Possibleusage models using priority or security attributes may be implementedusing the reserved attribute field.

In this example, ordering attribute field 316 is used to supply optionalinformation conveying the type of ordering that may modify defaultordering rules. According to one example implementation, an orderingattribute of “0” denotes default ordering rules are to apply, wherein anordering attribute of “1” denotes relaxed ordering, wherein writes canpass writes in the same direction, and read completions can pass writesin the same direction. Snoop attribute field 318 is utilized todetermine if transactions are snooped. As shown, channel ID Field 306identifies a channel that a transaction is associated with.

Returning to the discussion of FIG. 2, a Link layer 210, also referredto as data link layer 210, can act as an intermediate stage betweentransaction layer 205 and the physical layer 220. In one embodiment, aresponsibility of the data link layer 210 is providing a reliablemechanism for exchanging Transaction Layer Packets (TLPs) between twocomponents on a link. One side of the Data Link Layer 210 accepts TLPsassembled by the Transaction Layer 205, applies packet sequenceidentifier 211, i.e. an identification number or packet number,calculates and applies an error detection code, i.e. CRC 212, andsubmits the modified TLPs to the Physical Layer 220 for transmissionacross a physical to an external device.

In one example, physical layer 220 includes logical sub block 221 andelectrical sub-block 222 to physically transmit a packet to an externaldevice. Here, logical sub-block 221 is responsible for the “digital”functions of Physical Layer 221. In this regard, the logical sub-blockcan include a transmit section to prepare outgoing information fortransmission by physical sub-block 222, and a receiver section toidentify and prepare received information before passing it to the LinkLayer 210.

Physical block 222 includes a transmitter and a receiver. Thetransmitter is supplied by logical sub-block 221 with symbols, which thetransmitter serializes and transmits onto to an external device. Thereceiver is supplied with serialized symbols from an external device andtransforms the received signals into a bit-stream. The bit-stream isde-serialized and supplied to logical sub-block 221. In one exampleembodiment, an 8b/10b transmission code is employed, where ten-bitsymbols are transmitted/received. Here, special symbols are used toframe a packet with frames 223. In addition, in one example, thereceiver also provides a symbol clock recovered from the incoming serialstream.

As stated above, although transaction layer 205, link layer 210, andphysical layer 220 are discussed in reference to a specific embodimentof a protocol stack (such as a PCIe protocol stack), a layered protocolstack is not so limited. In fact, any layered protocol may beincluded/implemented and adopt features discussed herein. As an example,a port/interface that is represented as a layered protocol can include:(1) a first layer to assemble packets, i.e. a transaction layer; asecond layer to sequence packets, i.e. a link layer; and a third layerto transmit the packets, i.e. a physical layer. As a specific example, ahigh performance interconnect layered protocol, as described herein, isutilized.

Referring next to FIG. 4, an example embodiment of a serial point topoint fabric is illustrated. A serial point-to-point link can includeany transmission path for transmitting serial data. In the embodimentshown, a link can include two, low-voltage, differentially driven signalpairs: a transmit pair 406/411 and a receive pair 412/407. Accordingly,device 405 includes transmission logic 406 to transmit data to device410 and receiving logic 407 to receive data from device 410. In otherwords, two transmitting paths, i.e. paths 416 and 417, and two receivingpaths, i.e. paths 418 and 419, are included in some implementations of alink.

A transmission path refers to any path for transmitting data, such as atransmission line, a copper line, an optical line, a wirelesscommunication channel, an infrared communication link, or othercommunication path. A connection between two devices, such as device 405and device 410, is referred to as a link, such as link 415. A link maysupport one lane each lane representing a set of differential signalpairs (one pair for transmission, one pair for reception). To scalebandwidth, a link may aggregate multiple lanes denoted by xN, where N isany supported link width, such as 1, 2, 4, 8, 12, 16, 32, 64, or wider.

A differential pair can refer to two transmission paths, such as lines416 and 417, to transmit differential signals. As an example, when line416 toggles from a low voltage level to a high voltage level, i.e. arising edge, line 417 drives from a high logic level to a low logiclevel, i.e. a falling edge. Differential signals potentially demonstratebetter electrical characteristics, such as better signal integrity, i.e.cross-coupling, voltage overshoot/undershoot, ringing, among otherexample advantages. This allows for a better timing window, whichenables faster transmission frequencies.

In one embodiment, a new High Performance Interconnect (HPI) isprovided. HPI can include a next-generation cache-coherent, link-basedinterconnect. As one example, HPI may be utilized in high performancecomputing platforms, such as workstations or servers, including insystems where PCIe or another interconnect protocol is typically used toconnect processors, accelerators, I/O devices, and the like. However,HPI is not so limited. Instead, HPI may be utilized in any of thesystems or platforms described herein. Furthermore, the individual ideasdeveloped may be applied to other interconnects and platforms, such asPCIe, MIPI, QPI, etc.

To support multiple devices, in one example implementation, HPI caninclude an Instruction Set Architecture (ISA) agnostic (i.e. HPI is ableto be implemented in multiple different devices). In another scenario,HPI may also be utilized to connect high performance I/O devices, notjust processors or accelerators. For example, a high performance PCIedevice may be coupled to HPI through an appropriate translation bridge(i.e. HPI to PCIe). Moreover, the HPI links may be utilized by many HPIbased devices, such as processors, in various ways (e.g. stars, rings,meshes, etc.). FIG. 5 illustrates example implementations of multiplepotential multi-socket configurations. A two-socket configuration 505,as depicted, can include two HPI links; however, in otherimplementations, one HPI link may be utilized. For larger topologies,any configuration may be utilized as long as an identifier (ID) isassignable and there is some form of virtual path, among otheradditional or substitute features. As shown, in one example, a foursocket configuration 510 has an HPI link from each processor to another.But in the eight socket implementation shown in configuration 515, notevery socket is directly connected to each other through an HPI link.However, if a virtual path or channel exists between the processors, theconfiguration is supported. A range of supported processors includes2-32 in a native domain. Higher numbers of processors may be reachedthrough use of multiple domains or other interconnects between nodecontrollers, among other examples.

The HPI architecture includes a definition of a layered protocolarchitecture, including in some examples, protocol layers (coherent,non-coherent, and, optionally, other memory based protocols), a routinglayer, a link layer, and a physical layer. Furthermore, HPI can furtherinclude enhancements related to power managers (such as power controlunits (PCUs)), design for test and debug (DFT), fault handling,registers, security, among other examples. FIG. 5 illustrates anembodiment of an example HPI layered protocol stack. In someimplementations, at least some of the layers illustrated in FIG. 5 maybe optional. Each layer deals with its own level of granularity orquantum of information (the protocol layer 605 a,b with packets 630,link layer 610 a,b with flits 635, and physical layer 605 a,b with phits640). Note that a packet, in some embodiments, may include partialflits, a single flit, or multiple flits based on the implementation.

As a first example, a width of a phit 640 includes a 1 to 1 mapping oflink width to bits (e.g. 20 bit link width includes a phit of 20 bits,etc.). Flits may have a greater size, such as 184, 192, or 200 bits.Note that if phit 640 is 20 bits wide and the size of flit 635 is 184bits then it takes a fractional number of phits 640 to transmit one flit635 (e.g. 9.2 phits at 20 bits to transmit an 184 bit flit 635 or 9.6 at20 bits to transmit a 192 bit flit, among other examples). Note thatwidths of the fundamental link at the physical layer may vary. Forexample, the number of lanes per direction may include 2, 4, 6, 8, 10,12, 14, 16, 18, 20, 22, 24, etc. In one embodiment, link layer 610 a,bis capable of embedding multiple pieces of different transactions in asingle flit, and one or multiple headers (e.g. 1, 2, 3, 4) may beembedded within the flit. In one example, HPI splits the headers intocorresponding slots to enable multiple messages in the flit destined fordifferent nodes.

Physical layer 605 a,b, in one embodiment, can be responsible for thefast transfer of information on the physical medium (electrical oroptical etc.). The physical link can be point-to-point between two Linklayer entities, such as layer 605 a and 605 b. The Link layer 610 a,bcan abstract the Physical layer 605 a,b from the upper layers andprovides the capability to reliably transfer data (as well as requests)and manage flow control between two directly connected entities. TheLink Layer can also be responsible for virtualizing the physical channelinto multiple virtual channels and message classes. The Protocol layer620 a,b relies on the Link layer 610 a,b to map protocol messages intothe appropriate message classes and virtual channels before handing themto the Physical layer 605 a,b for transfer across the physical links.Link layer 610 a,b may support multiple messages, such as a request,snoop, response, writeback, non-coherent data, among other examples.

The Physical layer 605 a,b (or PHY) of HPI can be implemented above theelectrical layer (i.e. electrical conductors connecting two components)and below the link layer 610 a,b, as illustrated in FIG. 6. The Physicallayer and corresponding logic can reside on each agent and connects thelink layers on two agents (A and B) separated from each other (e.g. ondevices on either side of a link). The local and remote electricallayers are connected by physical media (e.g. wires, conductors, optical,etc.). The Physical layer 605 a,b, in one embodiment, has two majorphases, initialization and operation. During initialization, theconnection is opaque to the link layer and signaling may involve acombination of timed states and handshake events. During operation, theconnection is transparent to the link layer and signaling is at a speed,with all lanes operating together as a single link. During the operationphase, the Physical layer transports flits from agent A to agent B andfrom agent B to agent A. The connection is also referred to as a linkand abstracts some physical aspects including media, width and speedfrom the link layers while exchanging flits and control/status ofcurrent configuration (e.g. width) with the link layer. Theinitialization phase includes minor phases e.g. Polling, Configuration.The operation phase also includes minor phases (e.g. link powermanagement states).

In one embodiment, Link layer 610 a,b can be implemented so as toprovide reliable data transfer between two protocol or routing entities.The Link layer can abstract Physical layer 605 a,b from the Protocollayer 620 a,b, and can be responsible for the flow control between twoprotocol agents (A, B), and provide virtual channel services to theProtocol layer (Message Classes) and Routing layer (Virtual Networks).The interface between the Protocol layer 620 a,b and the Link Layer 610a,b can typically be at the packet level. In one embodiment, thesmallest transfer unit at the Link Layer is referred to as a flit whicha specified number of bits, such as 192 bits or some other denomination.The Link Layer 610 a,b relies on the Physical layer 605 a,b to frame thePhysical layer's 605 a,b unit of transfer (phit) into the Link Layer's610 a,b unit of transfer (flit). In addition, the Link Layer 610 a,b maybe logically broken into two parts, a sender and a receiver. Asender/receiver pair on one entity may be connected to a receiver/senderpair on another entity. Flow Control is often performed on both a flitand a packet basis. Error detection and correction is also potentiallyperformed on a flit level basis.

In one embodiment, Routing layer 615 a,b can provide a flexible anddistributed method to route HPI transactions from a source to adestination. The scheme is flexible since routing algorithms formultiple topologies may be specified through programmable routing tablesat each router (the programming in one embodiment is performed byfirmware, software, or a combination thereof). The routing functionalitymay be distributed; the routing may be done through a series of routingsteps, with each routing step being defined through a lookup of a tableat either the source, intermediate, or destination routers. The lookupat a source may be used to inject a HPI packet into the HPI fabric. Thelookup at an intermediate router may be used to route an HPI packet froman input port to an output port. The lookup at a destination port may beused to target the destination HPI protocol agent. Note that the Routinglayer, in some implementations, can be thin since the routing tables,and, hence the routing algorithms, are not specifically defined byspecification. This allows for flexibility and a variety of usagemodels, including flexible platform architectural topologies to bedefined by the system implementation. The Routing layer 615 a,b relieson the Link layer 610 a,b for providing the use of up to three (or more)virtual networks (VNs)—in one example, two deadlock-free VNs, VN0 andVN1 with several message classes defined in each virtual network. Ashared adaptive virtual network (VNA) may be defined in the Link layer,but this adaptive network may not be exposed directly in routingconcepts, since each message class and virtual network may havededicated resources and guaranteed forward progress, among otherfeatures and examples.

In some implementations, HPI can utilize an embedded clock. A clocksignal can be embedded in data transmitted using the interconnect. Withthe clock signal embedded in the data, distinct and dedicated clocklanes can be omitted. This can be useful, for instance, as it can allowmore pins of a device to be dedicated to data transfer, particularly insystems where space for pins is at a premium.

A link can be established between two agents on either side of aninterconnect. An agent sending data can be a local agent and the agentreceiving the data can be a remote agent. State machines can be employedby both agents to manage various aspects of the link. In one embodiment,the Physical layer datapath can transmit flits from the link layer tothe electrical front-end. The control path, in one implementation,includes a state machine (also referred to as a link training statemachine or the similar). The state machine's actions and exits fromstates may depend on internal signals, timers, external signals or otherinformation. In fact, some of the states, such as a few initializationstates, may have timers to provide a timeout value to exit a state. Notethat detect, in some embodiments, refers to detecting an event on bothlegs of a lane; but not necessarily simultaneously. However, in otherembodiments, detect refers to detection of an event by an agent ofreference. Debounce, as one example, refers to sustained assertion of asignal. In one embodiment, HPI supports operation in the event ofnon-function lanes. Here, lanes may be dropped at specific states.

States defined in the state machine can include reset states,initialization states, and operational states, among other categoriesand subcategories. In one example, some initialization states can have asecondary timer which is used to exit the state on a timeout(essentially an abort due to failure to make progress in the state). Anabort may include updating of registers, such as status register. Somestates can also have primary timer(s) which are used to time the primaryfunctions in the state. Other states can be defined such that internalor external signals (such as handshake protocols) drive transition fromthe state to another state, among other examples.

A state machine may also support debug through single step, freeze oninitialization abort and use of testers. Here, state exits can bepostponed/held until the debug software is ready. In some instance, theexit can be postponed/held until the secondary timeout. Actions andexits, in one embodiment, can be based on exchange of trainingsequences. In one embodiment, the link state machine is to run in thelocal agent clock domain and transition from one state to the next is tocoincide with a transmitter training sequence boundary. Status registersmay be utilized to reflect the current state.

FIG. 7 illustrates a representation of at least a portion of a statemachine used by agents in one example implementation of HPI. It shouldbe appreciated that the states included in the state table of FIG. 7include a non-exhaustive listing of possible states. For instance, sometransitions are omitted to simplify the diagram. Also, some states maybe combined, split, or omitted, while others might be added. Such statescan include:

Event reset state: entered on a warm or cold reset event. Restoresdefault values. Initialize counters (e.g., sync counters). May exit toanother state, such as another reset state.

Timed reset state: timed state for in-band reset. May drive a predefinedelectrical ordered set (EOS) so remote receivers are capable ofdetecting the EOS and entering the timed reset as well. Receiver haslanes holding electrical settings. May exit to an agent to calibratereset state.

Calibrate reset state: calibration without signaling on the lane (e.g.receiver calibration state) or turning drivers off. May be apredetermined amount of time in the state based on a timer. May set anoperational speed. May act as a wait state when a port is not enabled.May include minimum residency time. Receiver conditioning or staggeringoff may occur based on design. May exit to a receiver detect state aftera timeout and/or completion of calibration.

Receiver detect state: detect presence of a receiver on lane(s). Maylook for receiver termination (e.g. receiver pulldown insertion). Mayexit to calibrate reset state upon a specified value being set or whenanother specified value is not set. May exit to transmitter calibratestate if a receiver is detected or a timeout is reached.

Transmitter calibrate state: for transmitter calibrations. May be atimed state allocated for transmitter calibrations. May includesignaling on a lane. May continuously drive an EOS, such as an EIEOS.May exit to compliance state when done calibrating or on expiration of atimer. May exit to transmitter detect state if a counter has expired ora secondary timeout has occurred.

Transmitter detect state: qualifies valid signaling. May be a handshakestate where an agent completes actions and exits to a next state basedon remote agent signaling. Receiver may qualify valid signaling fromtransmitter. Receiver, in one embodiment, looks for a wake detect, andif debounced on one or more lanes looks for it on the other lanes.Transmitter drives a detect signal. May exit to a polling state inresponse to debounce being completed for all lanes and/or a timeout orif debounce on all lanes is not complete and there is a timeout. Here,one or more monitor lanes may be kept awake to debounce a wake signal.And if debounced then the other lanes are potentially debounced. Thiscan enable power savings in low power states.

Polling state: receiver adapts, initializes drift buffer and locks onbits/bytes (e.g. identifies symbol boundaries). Lanes may be deskewed. Aremote agent may cause an exit to a next state (e.g. a Link Width State)in response to an acknowledge message. Polling can additionally includea training sequence lock by locking to an EOS and a training sequenceheader. Lane to lane skew at remote transmitter may be capped at a firstlength for top speed and a second length for slow speed. Deskew may beperformed in a slow mode as well as an operational mode. Receiver mayhave a specific maximum to deskew lane-to-lane skew, such as 8, 16, or32 intervals of skew. Receiver actions may include latency fixing.Receiver actions, in one embodiment, can be completed on successfuldeskew of a valid lane map. A successful handshake can be achieved, inone example, when a number of consecutive training sequence headers arereceived with acknowledgements and a number of training sequences withan acknowledge are transmitted after the receiver has completed itsactions.

Link width state: agent communicates with the final lane map to remotetransmitter. Receiver receives the information and decodes. Receiver mayrecord a configured lane map in a structure after checkpoint of aprevious lane map value in a second structure. Receiver may also respondwith an acknowledge (“ACK”). May initiate an in-band reset. As oneexample, first state to initiate in-band reset. In one embodiment, exitto a next state, such as flit configuration state, is performed inresponse to the ACK. Further, prior to entering low power state, a resetsignal may also be generated if the frequency of a wake detect signaloccurrence drops below a specified value (e.g. 1 every number of unitintervals (UIs), such as 4K UI). Receiver may hold current and previouslane maps. Transmitter may use different groups of lanes based ontraining sequences having different values. Lane map may not modify somestatus registers in some embodiments.

Flitlock configuration state: entered by a transmitter but the state isconsidered exited (i.e. secondary timeout moot) when both transmitterand receiver have exited to a blocking link state or other link state.Transmitter exit to a link state, in one embodiment, includes start of adata sequence (SDS) and training sequence (TS) boundary after receivinga planetary alignment signal. Here, receiver exit may be based onreceiving an SDS from a remote transmitter. This state may be a bridgefrom agent to link state. Receiver identifies SDS. Receiver may exit toblocking link state (BLS) (or a control window) if SDS received after adescrambler is initialized. If a timeout occurs, exit may be to resetstate. Transmitter drives lanes with a configuration signal. Transmitterexit may be to reset, BLS, or other states based on conditions ortimeouts.

Transmitting Link State: a link state. Flits are sent to a remote agent.May be entered from a blocking link state and return to a blocking linkstate on an event, such as a timeout. Transmitter transmits flits.Receiver receives flits. May also exit to a low power link state. Insome implementations, transmitting link state (TLS) can be referred toas the L0 state.

Blocking Link State: a link state. Transmitter and receiver areoperating in a unified manner. May be a timed state during which thelink layer flits are held off while the Physical layer information iscommunicated to the remote agent. May exit to a low power link state (orother link state based on the design). A blocking link state (BLS), inone embodiment, periodically occurs. The period is referred to as a BLSinterval and may be timed, as well as may differ between slow speed andoperational speed. Note that the link layer may be periodically blockedfrom sending flits so that a Physical layer control sequence of a lengthmay be sent, such as during a transmitting link state or a partial widthtransmitting link state. In some implementations, blocking link state(BLS) can be referred to as a L0 control, or L0c, state.

Partial Width Transmitting Link State: Link state. May save power byentering a partial width state. In one embodiment asymmetric partialwidth refers to each direction of a two direction link having differentwidths, which may be supported in some designs. An example of aninitiator, such as a transmitter, sending a partial width indication toenter partial width transmitting link state is shown in the example ofFIG. 9. Here, a partial width indication is sent while transmitting on alink with a first width to transition the link to transmit at a second,new width. A mismatch may result in a reset. Note that speeds may not bealtered but width may be. Therefore, flits are potentially sent atdifferent widths. May be similar to a transmitting link state logically;yet, since there is a smaller width, it may take longer to transmitflits. May exit to other link states, such as a low power link statebased on certain received and sent messages or an exit of the partialwidth transmitting link state or a link blocking state based on otherevents. In one embodiment, a transmitter port may turn idle lanes off ina staggered manner to provide better signal integrity (i.e. noisemitigation) as shown in the timing diagram. Here, non-retry-able flits,Such as Null flits, may be utilized during periods where the link widthis changing. A corresponding receiver may drop these null flits and turnidle lanes off in a staggered manner, as well as record the current andprevious lane maps in one or more structures. Note status and associatedstatus register may remain unaltered. In some implementations, partialwidth transmitting link state can be referred to as a partial L0, orL0p, state.

Exit Partial Width Transmitting Link State: exit the partial widthstate. May or may not use a blocking link state in some implementations.The transmitter initiates exit, in one embodiment, by sending partialwidth exit patterns on the idle lanes to train and deskew them. As oneexample, an exit pattern start with EIEOS, which is detected anddebounced to signal that the lane is ready to start the entry to a fulltransmitting link state, and may end with SDS or Fast Training Sequence(FTS) on idle lanes. Any failure during the exit sequence (receiveractions, such as deskew not completed prior to timeout) stops flittransfers to the link layer and asserts a reset, which is handled byresetting the link on the next blocking link state occurrence. The SDSmay also initialize the scrambler/descrambler on the lanes toappropriate values.

Low Power Link State: is a lower power state. In one embodiment, it islower power than the partial width link state, since signaling in thisembodiment is stopped on all lanes and in both directions. Transmittersmay use a blocking link state for requesting a low power link state.Here, receiver may decode the request and respond with an ACK or a NAK;otherwise reset may be triggered. In some implementations, low powerlink state can be referred to as a L1 state.

In one embodiment, two types of pin resets can be supported; power-on(or “cold”) reset and warm reset. A reset initiated by software ororiginating (in the Physical or another layer) on one agent may becommunicated in-band to the other agent. However, due to usage of anembedded clock, an in-band reset may be handled by communication toanother agent using an ordered set, such as a specific electricalordered set or EIEOS, as introduced above. Such ordered sets can beimplemented as defined 16 Byte codes that may be represented inhexadecimal format, among other examples. The ordered set can be sentduring initialization and a PHY control sequence (or “blocking linkstate”) can be sent after initialization. The block link state can blockthe link layer from sending flits. As another example, link layertraffic may be blocked to send a few NULL flits which may be discardedat the receiver.

In some implementations of HPI, supersequences can be defined, eachsupersequence corresponding to a respective state or entry/exit to/fromthe respective state. A supersequence can include a repeating sequenceof data sets and symbols. The sequences can repeat, in some instances,until completion of a state or state transition, or communication of acorresponding event, among other examples. In some instances, therepeating sequence of a supersequence can repeat according to a definedfrequency, such as a defined number of unit intervals (UIs). A unitinterval (UI) can correspond to the interval of time for transmitting asingle bit on a lane of a link or system. In some implementations, therepeating sequence can begin with an electrically ordered set (EOS).Accordingly, an instance of the EOS can be expected to repeat inaccordance with the predefined frequency. Such ordered sets can beimplemented as defined 16 Byte codes that may be represented inhexadecimal format, among other examples. In one example, the EOS of asupersequence can be an electrically ordered electrical idle ordered set(or EIEIOS). In one example, an EIEOS can resemble a low frequency clocksignal (e.g., a predefined number of repeating FF00 or FFF000hexadecimal symbols, etc.). A predefined set of data can follow the EOS,such as a predefined number of training sequences or other data. Suchsupersequences can be utilized in state transitions including link statetransitions as well as initialization, among other examples.

As introduced above, initialization, in one embodiment, can be doneinitially at slow speed followed by initialization at fast speed.Initialization at slow speed uses the default values for the registersand timers. Software then uses the slow speed link to setup theregisters, timers and electrical parameters and clears the calibrationsemaphores to pave the way for fast speed initialization. As oneexample, initialization can consist of such states or tasks as Reset,Detect, Polling, and Configuration, among potentially others.

In one example, a link layer blocking control sequence (i.e. a blockinglink state (BLS) or L0c state) can include a timed state during whichthe link layer flits are held off while the PHY information iscommunicated to the remote agent. Here, the transmitter and receiver maystart a block control sequence timer. And upon expiration of the timers,the transmitter and receiver can exit the blocking state and may takeother actions, such as exit to reset, exit to a different link state (orother state), including states that allow for the sending of flitsacross the link.

In one embodiment, link training can be provided and include the sendingof one or more of scrambled training sequences, ordered sets, andcontrol sequences, such as in connection with a defined supersequence. Atraining sequence symbol may include one or more of a header, reservedportions, a target latency, a pair number, a physical lane map codereference lanes or a group of lanes, and an initialization state. In oneembodiment, the header can be sent with a ACK or NAK, among otherexamples. As an example, training sequences may be sent as part ofsupersequences and may be scrambled.

In one embodiment, ordered sets and control sequences are not scrambledor staggered and are transmitted identically, simultaneously andcompletely on all lanes. A valid reception of an ordered set may includechecking of at least a portion of the ordered set (or entire ordered setfor partial ordered sets). Ordered sets may include an electricallyordered set (EOS), such as an Electrical Idle Ordered Set (EIOS) or anEIEOS. A supersequence may include a start of a data sequence (SDS) or aFast Training Sequence (FTS). Such sets and control supersequences canbe predefined and may have any pattern or hexadecimal representation, aswell as any length. For example, ordered sets and supersequences may bea length of 8 bytes, 16, bytes, or 32 bytes, etc. FTS, as an example,can additionally be utilized for fast bit lock during exit of a partialwidth transmitting link state. Note that the FTS definition may be perlane and may utilize a rotated version of the FTS.

Supersequences, in one embodiment, can include the insertion of an EOS,such as an EIEOS, in a training sequence stream. When signaling starts,lanes, in one implementation, power-on in a staggered manner. This mayresult, however, in initial supersequences being seen truncated at thereceiver on some lanes. Supersequences can be repeated however overshort intervals (e.g., approximately one-thousand unit intervals (or˜1KUI)). The training supersequences may additionally be used for one ormore of deskew, configuration and for communicating initializationtarget, lane map, etc. The EIEOS can be used for one or more oftransitioning a lane from inactive to active state, screening for goodlanes, identifying symbol and TS boundaries, among other examples.

Turning to FIG. 8, representations of example supersequences are shown.For instance, an exemplary Detect supersequence 805 can be defined. TheDetect supersequence 805 can include a repeating sequence of a singleEIEOS (or other EOS) followed by a predefined number of instances of aparticular training sequence (TS). In one example, the EIEOS can betransmitted, immediately followed by seven repeated instances of TS.When the last of the seven TSes is sent the EIEOS can be sent againfollowed by seven additional instances of TS, and so on. This sequencecan be repeated according to a particular predefined frequency. In theexample of FIG. 8, the EIEOS can reappear on the lanes approximatelyonce every one thousand UIs (˜1KUI) followed by the remainder of theDetect supersequence 805. A receiver can monitor lanes for the presenceof a repeating Detect supersequence 805 and upon validating thesupersequence 705 can conclude that a remote agent is present, has beenadded (e.g., hot plugged) on the lanes, has awoke, or is reinitializing,etc.

In another example, another supersequence 810 can be defined to indicatea polling, configuration, or loopback condition or state. As with theexample Detect supersequence 805, lanes of a link can be monitored by areceiver for such a Poll/Config/Loop supersequence 810 to identify apolling state, configuration state, or loopback state or condition. Inone example, a Poll/Config/Loop supersequence 810 can begin with anEIEOS followed by a predefined number of repeated instances of a TS. Forinstance, in one example the EIEOS can be followed by thirty-one (31)instances of TS with the EIEOS repeating approximately every fourthousand UI (e.g., ˜4KUI).

Further, in another example, a partial width transmitting state (PWTS)exit supersequence 815 can be defined. In one example, a PWTS exitsupersequence can include an initial EIEOS to repeat to pre-conditionlanes in advance of the sending of the first full sequence in thesupersequence. For instance, the sequence to be repeated insupersequence 815 can begin with an EIEOS (to repeat approximately onceevery 1KUI). Further, fast training sequences (FTS) can be utilized inlieu of other training sequences (TS), the FTS configured to assist inquicker bit lock, byte lock, and deskewing. In some implementations, anFTS can be unscrambled to further assist in bringing idle lanes back toactive as quickly and non-disruptively as possible. As with othersupersequences preceding an entry into a link transmitting state, thesupersequence 815 can be interrupted and ended through the sending of astart of data sequence (SDS). Further, a partial FTS (FTSp) can be sentto assist in synchronizing the new lanes to the active lanes, such as byallowing bits to be subtracted (or added) to the FTSp, among otherexamples.

Supersequences, such as Detect supersequence 705 and Poll/Config/Loopsupersequence 710, etc. can potentially be sent substantially throughoutthe initialization or re-initialization of a link. A receiver, uponreceiving and detecting a particular supersequence can, in someinstances, respond by echoing the same supersequence to the transmitterover the lanes. The receiving and validation of a particularsupersequence by transmitter and receiver can serve as a handshake toacknowledge a state or condition communicated through the supersequence.For instance, such a handshake (e.g., utilizing a Detect supersequence705) can be used to identify reinitialization of a link. In anotherexample, such a handshake can be utilized to indicate the end of anelectrical reset or low power state, resulting in corresponding lanesbeing brought back up, among other examples. The end of the electricalreset can be identified, for instance, from a handshake betweentransmitter and receiver each transmitting a Detect supersequence 705.

In another example, lanes can be monitored for supersequences and usethe supersequences in connection with the screening of lanes for detect,wake, state exits and entries, among other events. The predefined andpredictable nature and form of supersequences can be further used toperform such initialization tasks as bit lock, byte lock, debouncing,descrambling, deskewing, adaptation, latency fixing, negotiated delays,and other potential uses. Indeed, lanes can be substantiallycontinuously monitored for such events to quicken the ability of thesystem to react to and process such conditions. In the case ofdebouncing, transients can be introduced on lanes as a result of avariety of conditions. For instance, the addition or powering-on of adevice can introduce transients onto the lane. Additionally, voltageirregularities can be presented on a lane because of poor lane qualityor electrical failure. Such irregularities can be readily detected onsupersequences with predictable values, such as when values of an EIEOSunexpectedly deviate in connection with transients or other bit errors.

In one example, a transmitting device can attempt to enter a particularstate. For instance, the transmitting device can attempt to activate thelink and enter an initialization state. In another example, thetransmitting device can attempt to exit a low power state, such as an L1state, among other examples. In some instances of an L1 state, the L1state can serve as a power savings, idle, or standby state. Indeed, insome examples, main power supplies may remain active in the L1 state. Inexiting an L1 state, a first device can send a supersequence associatedwith transitioning from the L1 state to a particular other state, suchas an L0 transmitting link state (TLS). The supersequence, as in otherexamples, can be a repeating sequence of an EOS followed by apredetermined number of TSes such that the EOS is repeated at aparticular predefined frequency. In one examples, a Detect supersequencecan be used to exit the L1 or other low power state. A receiving devicecan receive and validate the data, identifying the supersequence, andthe receiving device can complete the handshake with the transmittingdevice by sending the supersequence back to the transmitting device.

With both the transmitting and receiving devices receiving the samesupersequence, each device can further perform additional initializationtasks utilizing the supersequences. For instance, each device canperform debouncing, bit lock, byte lock, descrambling, and deskewingutilizing the supersequences. Additional initialization information canbe communicated through the headers and payloads of the TSes included inthe supersequences. When the link is initialized, a start data send(SDS) sequence can be sent, in some cases, interrupting thesupersequence (e.g. sent in the middle of a TS or EIEOS) and therespective devices on either side of the link can prepare for thesynchronized entry into TLS. In TLS, or an “L0” state, supersequencescan be ended and flits can be transmitted utilizing the Link layer ofthe protocol stack.

While in TLS, the Physical layer may still be provided limitedopportunities to perform control tasks. For instance, bit errors andother errors may be identified on one or more lanes during an L0 state.In one implementation, a control state L0c can be provided. The L0cstate can be provided as a periodic window within the TLS to allowPhysical layer control messages to be sent between streams of flits sentthrough the Link layer. For instance, as represented in the exampleillustrated in FIG. 9, an L0 state can be subdivided into L0c intervals.Each L0c interval can begin with a L0c state or window (e.g., 905) inwhich Physical layer control codes and other data can be sent. Theremainder (e.g., 910) of the L0c interval can be dedicated to thesending of flits. The length of the L0c interval and L0c state in eachinterval can be programmatically defined, for instance by BIOS of one ormore devices or another software-based controller, among other examples.The L0c state can be exponentially shorter than the remainder of an L0cinterval. For instance, in one example, the L0c can be 8 UI while theremainder of the L0c interval is on the order of 4KUI, among otherexamples. This can allow windows in which relatively short, predefinedmessages can be sent without substantially disrupting or wasting linkdata bandwidth.

L0c state message can communicate a variety of conditions at thePhysical layer level. In one example, one device can initiate a reset ofthe link or a lane, for instance, based on bit errors or other errors inexcess of a particular threshold amount. Such errors can also becommunicated in L0c windows (such as preceding L0c windows). The L0cstate can also be leveraged to realize other in-band signaling, such assignaling for use in aiding or triggering transitions between other linkstates. In one example, L0c messages can be utilized to transition alink from an active L0 state to a standby or low power state, such as anL1 state. As shown in the simplified flow diagram of FIG. 10, aparticular L0c state can be used to communicate a L1 entry request(e.g., 1010). Further flits (e.g., 1020, 1030) can be sent while thedevice (or agent on the device) waits for an acknowledgement of therequest 1010. The other device on the link can send the acknowledgement(e.g., 1040). In some examples, the acknowledgement can also be sent ina L0c window. In some instances, the acknowledgement can be sent in thenext L0c window following receipt/sending of the L1 request 1010. Timerscan be employed to synchronize the L0c intervals at each device and therequesting device can identify the acknowledgement 1040 as anacknowledgement of the request 1010 (e.g., rather than an independent L1entry request) based on an identification that the acknowledgement 1040was sent at the next L0c window, among other examples. In someinstances, an acknowledgement can be communicated through an L0c codedistinct from that used in the L1 entry request 1010. In otherinstances, the acknowledgement 1040 can include the echoing of the L1entry request code used in request 1010, among other examples. Further,in alternative examples, a non-acknowledge signal or NAK can becommunicated in the L0c window.

In addition (or as an alternate) to handshaking using L0c codes,supersequences, such as Detect supersequence, can be sent in connectionwith resetting and re-initializing the link. Further handshaking canoccur between the devices as the supersequences sent by a first deviceand echoed by the second, receiving device. Supersequences can be used,as described above, to assist in the reinitialization of the linkincluding debouncing, bit lock, byte lock, descrambling, and deskewingthe lanes of the link. Further, the devices can utilize the timer (e.g.,embodying the L0c interval) to synchronize entry of the devices and thelink into the requested L1 state. For instance, receipt of theacknowledgement 1040 can indicate to the devices that they are tomutually enter (or begin entering) the L1 state at the end of the L0cinterval corresponding to the L0c window in which the acknowledgementwas sent, among other examples. For instance, data sent in an L0c windowincluded in or otherwise associated with the acknowledgement 1040 canindicate the time at which the devices are to enter the L1 state, amongother potential examples. Additional flits (e.g., 1050), in someinstances, can be sent while the devices await the timeout correspondingto the transition into the L1 state.

In some implementations of HPI, links can be established upon any numberof two or more lanes. Further, a link can be initialized at a firstnumber of lanes and later transition to a partial width state such thatonly a portion of the number of lanes is used. The partial width statecan be designated as a lower power state, such as a L0p state. In oneexample, an L0c state can be used to transition from a L0 state wherethe first number of lanes is active to an L0p state where a lessernumber of lanes are to be active. For instance, as shown in the exampleof FIG. 11, an link can be active at a first width 1110. In someinstances, the first width can be the full width (e.g., at L0). In otherinstances, the link can transition from a first L0p state utilizing afirst number of lanes to another L0p using a different number (or set)of lanes, among other examples. During a L0c window of the lanes in thefirst width, a L0p entry code 1120 can be transmitted. The L0p entryrequest 1120 can identify what new width should be applied. In someinstances, the new link width can be predetermined and identified simplyfrom the receipt of the L0p request 1120. Additionally, the particularlanes to be dropped in the partial width state can also be specified orotherwise identified or preconfigured in connection with the L0p request1120, among other examples.

Continuing with the example of FIG. 11, flits or other data can continueto be sent across the full width of lanes while the link awaitstransition into the L0p state. For instance, a duration t can bespecified by synchronized timers at the devices connected through thelink to synchronize entry into the L0p state. In one example, theduration t can correspond to a remainder of a L0c interval correspondingto the request 1120. At the end of the interval a portion of the laneswill remain active while another portion of the lanes are put into aninactive or idle state. The link will then operate at the new width(e.g., 1140), at least until an L0p exit request or other link widthtransition request is received, among other examples.

HPI can utilize one or more power control units (PCU) to assist intiming transitions between an L0 state and lower power states, such asL0p and L. Further, HPI can support master-slave, master-master andother architectures. For instance, a PCU may be present on or otherwiseassociated with only one of the devices connected on a link and thedevice having the PCU can be considered the master. Master-masterconfigurations can be realized, for instance, when both devices have anassociated PCU which can prompt a link state transition. Someimplementations can specify a minimum stay for a particular low powerstate, such as L0p or L1, for example, to attempt minimize transitionsbetween states and attempt to maximize power savings within an enteredlow power state, among other examples.

Exiting from a partial width low power state can be adapted to takeplace efficiently and quickly so as to minimize the impact andinterruption of the active lanes. In some implementations. L0c windowsand codes can also be used to trigger an exit from an L0p or other stateto reactive idle lanes. Turning, for instance, to the examples of FIG.12, a simplified flow diagram is shown illustrating an example exit froman L0p state. In the particular example of FIG. 12, flit data (e.g.,1205) can be sent when an L0c window 1210 is encountered in which a L0entry (or L0p exit) request is included. Additional flits 1215 can besent prior to the point at which the L0p exit is to occur. As in otherexamples, an L0c code 1210 can include identification of or implicitlyidentify a time at which a state transition is to begin/end as well asparticular events of the state transition. Flits (e.g. 1215) cancontinue to be sent to maximize data transfer while the devicesanticipate to enter the state transition.

In one example, an EIEOS 1220 (or other data such another EOS) can besent on the inactive lanes to begin conditioning the lanes. In someinstances, such inactive lanes (e.g., lanes “n+1” through “z”) may havebeen inactive for some time and waking the lanes can introduceelectrical transients and other instability. Accordingly, the EIEOS1220, as well as partial width supersequences sent in connection withthe exit from the L0p state can be used to debounce the lanes as theyawake. Further, in some instances, transients on the waking lanes (e.g.,lanes “n+1” through “z”) can potentially affect the active lanes (e.g.,lanes “0” through “n”). To prevent against irregularities stemming fromthe re-awakening of the idle lanes negatively impacting the activelanes, the active lanes can be synchronized to send null flits (e.g., at1225) at or immediately prior to the initial signals (e.g., 1220) beingsent over the waking lanes.

In some implementations, re-initialization of the idle lanes can betimed to begin, such as at the conclusion of a corresponding L0cinterval. In other instances, an alternative time can be employed tostart re-initialization early. In such instances, a transmitter of theL0p exit request can cause the idle lanes to be pre-conditioned, forinstance, through the sending of one or more single EIEOSes. The sendingof such conditioning signals can be coordinated with the active lanes sothat null flits are sent momentarily on the active lanes to coincidewith the initial sending of the EIEOS and protect the active lanes frominterfering transients at the start-up of the idle lanes, among otherexamples. For instance, Link layer buffers can be alternatively oradditionally used to protect against bit loss resulting from suchtransients in reawaking idle lanes, among other techniques.

Further, in some implementations, following the sending of an initialEIEOS (or supersequence) a partial width state exit supersequence (e.g.,1230) can be sent. At least a portion of the supersequence can berepeated on the active lanes (e.g., at 1225). Further, the devicereceiving supersequence 1225 can echo the supersequence to handshake andacknowledge the state transition, among other examples. The sending ofthe supersequence (e.g., 1230) can be further used to perform bit lock,byte lock, debouncing, descrambling, and deskew. For instance, thereactivated lanes can be deskewed against the active lanes. In someinstances, the initial configurations determined for the idle lanes inthe original initialization of the link can be accessed and applied,although, in other instances, the idle character of the lanes can resultin changes to the skew and other lane characteristics resulting in theeffective re-initialization of the idle lanes.

Returning briefly to FIG. 8, one example is represented of sequencesthat can be sent in connection with a partial width transmitting stateexit (e.g., a transition from a L0p state to an L0 state). As lanes areto remain active before and after such a transition, a premium can beplaced on accelerating the state transition so as to provide minimaldisruption to the active lanes. In one example, a partial supersequencecan be sent (e.g., as in 1220 of FIG. 12) without the subsequenttraining sequences to expedite debouncing. For instance, transients canbe attempted to be resolved within the first EIEOS without waitinganother 1KUI for a second complete EIEOS to be sent to begin bit lock,byte lock, deskew, and other tasks. Further the full partial widthtransmitting state exit supersequence can include a repeating sequenceof an EOS (e.g., EIEOS) followed by a predefined number of trainingsequences. In the example of FIG. 8, an EIEOS can be sent followed by aseries of training sequence (e.g., seven consecutive trainingsequences). In one implementation, rather than sending a full trainingsequence (such as a “TS” used in supersequences 805, 810) an abbreviated“fast training sequence” (or FTS) can be sent. The symbols of the FTScan be optimized to assist with the quick bit and byte lock anddeskewing of the reactivated lanes, among other features. In oneexample, the FTS can be less than 150 UI in length (e.g., 128 UI).Further, FTSes can be left unscrambled so as to further assist in quickrecovery of the idle lanes.

As shown in the third row of element 815, a partial width transmittingstate exit supersequence can also be interrupted by an SDS once acontroller has determined that the reactivated lanes have beeneffectively initialized. In one example, a partial FTS (or FTSp) canfollow the SDS to assist with synchronizing the reactivated lane withthe active lanes (e.g., once bit lock, byte lock, and deskewing havebeen completed). For instance, the bit length of the FTSp can be set tocorrespond to a clean flit boundary for the final width between thereactivated lanes and the active lanes. To facilitate fastsynchronization of the lane, bits can be added or subtracted from a laneat the receiver prior or during the FTSp to account for the skew.Alternatively, or in addition, bits can also be added or subtracted tothe lane at the receiver prior or during the SDS to facilitate deskewingof a newly activated lane, among other examples.

Returning to the discussion of FIG. 12, transmission of data flits canbe resumed on active lanes (e.g., lanes 0 through n) (e.g. at 1225)while initialization of the waking lanes completes in some examples. Forinstance, once debouncing has been resolved, link layer transmissionscan resume. In some instances, flit transmission can be momentarilyinterrupted (e.g., at 1240) in connection with the final reactivationand synchronization of the previously idle lanes (e.g., lanes n+1through z) (e.g., in connection with the sending of an FTSp 1235). Withthe lanes restored, flit data 1245 can then resume on all lanes.

In one embodiment, the clock can be embedded in the data so there are noseparate clock lanes. The flits sent over the lanes can be scrambled tofacilitate clock recovery. The receiver clock recovery unit, as oneexample, can deliver sampling clocks to a receiver (i.e. the receiverrecovers clock from the data and uses it to sample the incoming data).Receivers in some implementations continuously adapt to an incoming bitstream. By embedding the clock, pinout can be potentially reduced.However, embedding the clock in the in-band data can alter the manner inwhich in-band reset is approached. In one embodiment, a blocking linkstate (BLS) can be utilized after initialization. Also, electricalordered set supersequences may be utilized during initialization tofacilitate the reset (e.g., as described above), among otherconsiderations. The embedded clock can be common between the devices ona link and the common operational clock can be set during calibrationand configuration of the link. For instance, HPI links can reference acommon clock with drift buffers. Such implementation can realize lowerlatency than elastic buffers used in non-common reference clocks, amongother potential advantages. Further, the reference clock distributionsegments may be matched to within specified limits.

As noted above, an HPI link can be capable of operating at multiplespeeds including a “slow mode” for default power-up, initialization,etc. The operational (or “fast”) speed or mode of each device can bestatically set by BIOS. The common clock on the link can be configuredbased on the respective operational speeds of each device on either sideof the link. For instance, the link speed can be based on the slower ofthe two device operations speeds, among other examples. Any operationalspeed change may be accompanied by a warm or cold reset.

In some examples, on power-on, the link initializes to Slow Mode withtransfer rate of, for example, 100 MT/s. Software then sets up the twosides for operational speed of the link and begins the initialization.In other instances, a sideband mechanism can be utilized to set up alink including the common clock on the link, for instance, in theabsence or unavailability of a slow mode.

A slow mode initialization phase, in one embodiment, can use the sameencoding, scrambling, training sequences (TS), states, etc. asoperational speed but with potentially fewer features (e.g., noelectrical parameter setup, no adaptation, etc.). Slow mode operationphase can also potentially use the same encoding, scrambling etc.(although other implementations may not) but may have fewer states andfeatures compared to operational speed (e.g., no low power states).

Further, slow mode can be implemented using the native phase lock loop(PLL) clock frequency of the device. For instance, HPI can support anemulated slow mode without changing PLL clock frequency. While somedesigns may use separate PLLs for slow and fast speed, in someimplementations of HPI emulated slow mode can be achieved by allowingthe PLL clock to runs at the same fast operational speed during slowmode. For instance, a transmitter can emulate a slower clock signal byrepeating bits multiple times so as to emulate a slow high clock signaland then a slow low clock signal. The receiver can then oversample thereceived signal to locate edges emulated by the repeating bits andidentify the bit. In such implementations, ports sharing a PLL maycoexist at slow and fast speeds.

A common slow mode speed can be initialized between two devices. Forinstance, the two devices on a link may have different fast operationalspeeds. A common slow mode speed can be configured, for instance, duringa discovery phase or state on the link. In one example, an emulationmultiple can be set as an integer (or non-integer) ratio of fast speedto slow speed, and the different fast speeds can be down-converted towork with the same slow speed. For instance, two device agents whichsupport at least one common frequency may be hot attached irrespectiveof the speed at which the host port is running. Software discovery maythen use the slow mode link to identify and setup the most optimal linkoperational speeds. Where the multiple is an integer ratio of fast speedto slow speed, different fast speeds may work with the same slow speed,which may be used during the discovery phase (e.g., of hot attach).

In some implementations of HPI, adaptation of lanes on a link can besupported. The Physical layer can support both receiver adaptation andtransmitter, or sender, adaptation. With receiver adaptation, thetransmitter on a lane can send sample data to the receiver which thereceiver logic can process to identify shortcomings in the electricalcharacteristics of the lane and quality of the signal. The receiver canthen make adjustments to the calibration of the lane to optimize thelane based on the analysis of the received sample data. In the case oftransmitter adaptation, the receiver can again receive sample data anddevelop metrics describing the quality of the lane but in this casecommunicate the metrics to the transmitter (e.g., using a backchannel,such as a software, hardware, embedded, sideband or other channel) toallow the transmitter to make adjustments to the lane based on thefeedback. Receiver adaptation can be initiated at the start of thePolling state using the Polling supersequence sent from the remotetransmitter. Similarly, transmitter adaptation can be done by repeatingthe following for each transmitter parameters. Both agents can enterLoopback Pattern state as masters and transmit specified pattern. Bothreceivers can measure the metric (e.g. BER) for that particulartransmitter setting at a remote agent. Both agents can go to Loopback.Marker state and then Reset and use backchannels (slow mode TLS orsideband) to exchange metrics. Based on these metrics, the nexttransmitter setting can be identified. Eventually the optimaltransmitter setting can be identified and saved for subsequent use.

As both devices on a link can run off the same reference clock (e.g.,ref clk), elasticity buffers can be omitted (any elastic buffers may bebypassed or used as drift buffers with lowest possible latency).However, phase adjustment or drift buffers can be utilized on each laneto transfer the respective receiver bitstream from the remote clockdomain to the local clock domain. The latency of the drift buffers maybe sufficient to handle sum of drift from all sources in electricalspecification (e.g., voltage, temperature, the residual SSC introducedby reference clock routing mismatches, and so on) but as small aspossible to reduce transport delay. If the drift buffer is too shallow,drift errors can result and manifest as series of CRC errors.Consequently, in some implementations, a drift alarm can be providedwhich can initiate a Physical layer reset before an actual drift erroroccurs, among other examples.

Some implementations of HPI may support the two sides running at a samenominal reference clock frequency but with a ppm difference. In thiscase frequency adjustment (or elasticity) buffers may be needed and canbe readjusted during an extended BLS window or during special sequenceswhich would occur periodically, among other examples.

The operation of the HPI PHY logical layer can be independent of theunderlying transmission media provided the latency does not result inlatency fixing errors or timeouts at the link layer, among otherconsiderations.

External interfaces can be provided in HPI to assist in management ofthe Physical layer. For instance, external signals (from pins, fuses,other layers), timers, control and status registers can be provided. Theinput signals may change at any time relative to PHY state but are to beobserved by the Physical layer at specific points in a respective state.For example, a changing alignment signal (as introduced below) may bereceived but have no effect after the link has entered a transmittinglink state, among other examples. Similarly command register values canbe observed by Physical layer entities only at specific points in time.For instance, Physical layer logic can take a snapshot of the value anduse it in subsequent operations. Consequently, in some implementations,updates to command registers may be associated with a limited subset ofspecific periods (e.g., in a transmitting link state or when holding inReset calibration, in slow mode transmitting link state) to avoidanomalous behavior.

Since status values track hardware changes, the values read may dependon when they are read. Some status values, however, such as link map,latency, speed, etc., may not change after initialization. For instance,a re-initialization (or low power link state (LPLS), or L1 state, exit)is the only thing which may cause these to change (e.g., a hard lanefailure in a TLS may not result in reconfiguration of link untilre-initialization is triggered, among other examples).

Interface signals can include signals that are external to but affectPhysical layer behavior. Such interface signals can include, asexamples, encoding and timing signals. Interface signals can be designspecific. These signals can be an input or output. Some interfacesignals, such as termed semaphores and prefixed EO among other examples,can be active once per assertion edge, i.e., they may be deasserted andthen reasserted to take effect again, among other examples. Forinstance, Table I includes an example listing of example functions:

TABLE 1 Function input pin reset (aka warm reset) input pin reset (akacold reset) input in-band reset pulse; causes semaphore to be set;semaphore is cleared when in-band reset occurs input enables low powerstates input loopback parameters; applied for loopback pattern input toenter PWLTS input to exit PWLTS input to enter LPLS input to exit LPLSinput from idle exit detect (aka squelch break) input enables use ofCPhyInitBegin input from local or planetary alignment for transmitter toexit initialization output when remote agent NAKs LPLS request outputwhen agent enters LPLS output to link layer to force non-retryable flitsoutput to link layer to force NULL flits output when transmitter is inpartial width link transmitting state (PWLTS) output when receiver is inPWLTS

CSR timer default values can be provided in pairs—one for slow mode andone for operational speed. In some instances, the value 0 disables thetimer (i.e., timeout never occurs). Timers can include those shown inTable 2, below. Primary timers can be used to time expected actions in astate. Secondary timers are used for aborting initializations which arenot progressing or for making forward state transitions at precise timesin an automated test equipment (or ATE) mode. In some cases, secondarytimers can be much larger than the primary timers in a state.Exponential timer sets can be suffixed with exp and the timer value is 2raised to the field value. For linear timers, the timer value is thefield value. Either timer could use different granularities.Additionally, some timers in the power management section can be in aset called a timing profile. These can be associated with a timingdiagram of the same name.

TABLE 2 Timers Table Tpriexp Set Reset residency for driving EIEOSReceiver calibration minimum time; for stagger transmitter offTransmitter calibration minimum time; for stagger on Tsecexp Set Timedreceiver calibration Timed transmitter calibration Squelch exitdetect/debounce DetectAtRx overhang for handshake Adapt +bitlock/bytelock/deskew Configure link widths Wait for planetary alignedclean flit boundary Re-bytelock/deskew Tdebugexp Set For hot plug; non-0value to debug hangs TBLSentry Set BLS entry delay-fine BLS entrydelay-coarse TBLS Set BLS duration for transmitter BLS duration forreceiver BLS clean flit interval for transmitter TBLS clean flitinterval for receiver

Command and control registers can be provided. Control registers can belate action and may be read or written by software in some instances.Late-action values can take effect (e.g., pass through fromsoftware-facing to hardware-facing stage) continuously in Reset. Controlsemaphores (prefixed CP) are RW1S and can be cleared by hardware.Control registers may be utilized to perform any of the items describedherein. They may be modifiable and accessible by hardware, software,firmware, or a combination thereof.

Status registers can be provided to track hardware changes (written andused by hardware) and can be read-only (but debug software may also beable to write to them). Such registers may not affect interoperabilityand can be typically complemented with many private status registers.Status semaphores (prefixed SP) can be mandated since they may becleared by software to redo the actions which set the status. Defaultmeans initial (on reset) values can be provided as a subset of thesestatus bits related to initialization. On an initialization abort, thisregister can be copied into a storage structure.

Tool Box registers can be provided. For instance, testability tool-boxregisters in the Physical layer can provide pattern generation, patternchecking and loop back control mechanisms. Higher-level applications canmake use of these registers along with electrical parameters todetermine margins. For example, Interconnect built in test may utilizethis tool-box to determine margins. For transmitter adaptation, theseregisters can be used in conjunction with the specific registersdescribed in previous sections, among other examples.

In some implementations, HPI supports Reliability, Availability, andServiceability (RAS) capabilities utilizing the Physical layer. In oneembodiment, HPI supports hot plug and remove with one or more layers,which may include software. Hot remove can include quiescing the linkand an initialization begin state/signal can be cleared for the agent tobe removed. A remote agent (i.e. the one that is not being removed(e.g., the host agent)) can be set to slow speed and its initializationsignal can also be cleared. An in-band reset (e.g., through BLS) cancause both agents to wait in a reset state, such as a Calibrate ResetState (CRS); and the agent to be removed can be removed (or can be heldin targeted pin reset, powered down), among other examples and features.Indeed, some of the above events may be omitted and additional eventscan be added.

Hot add can include initialization speed can default to slow and aninitialization signal can be set on the agent to be added. Software canset speed to slow and may clear the initialization signal on the remoteagent. The link can come up in slow mode and software can determine anoperational speed. In some cases, no PLL relock of a remote is performedat this point. Operational speed can be set on both agents and an enablecan be set for adaptation (if not done previously). The initializationbegin indicator can be cleared on both agents and an in-band BLS resetcan cause both agents to wait in CRS. Software can assert a warm reset(e.g., a targeted or self-reset) of an agent (to be added), which maycause a PLL to relock. Software may also set the initialization beginsignal by any known logic and further set on remote (thus advancing itto Receiver Detect State (RDS)). Software can de-assert warm reset ofthe adding agent (thus advancing it to RDS). The link can theninitialize at operational speed to a Transmitting Link State (TLS) (orto Loopback if the adaption signal is set), among other examples.Indeed, some of the above events may be omitted and additional eventscan be added.

Data lane failure recovery can be supported. A link in HPI, in oneembodiment, can be resilient against hard error on a single lane byconfiguring itself to less than full width (e.g. less than half the fullwidth) which can thereby exclude the faulty lane. As an example, theconfiguration can be done by link state machine and unused lanes can beturned off in the configuration state. As a result, the flit may be sentacross at a narrower width, among other examples.

In some implementations of HPI, lane reversal can be supported on somelinks. Lane reversal can refer, for instance, to lanes 0/1/2 . . . of atransmitter connected to lanes n/n−1/n−2 . . . of a receiver (e.g. n mayequal 19 or 7, etc.). Lane reversal can be detected at the receiver asidentified in a field of a TS header. The receiver can handle the lanereversal by starting in a Polling state by using physical lane n . . . 0for logical lane 0 . . . n. Hence, references to a lane may refer to alogical lane number. Therefore, board designers may more efficiently laydown the physical or electrical design and HPI may work with virtuallane assignments, as described herein. Moreover, in one embodiment,polarity may be inverted (i.e. when a differential transmitter +/− isconnected to receiver −/+. Polarity can also be detected at a receiverfrom one or more TS header fields and handled, in one embodiment, in thePolling State.

Referring to FIG. 13, an embodiment of a block diagram for a computingsystem including a multicore processor is depicted. Processor 1300includes any processor or processing device, such as a microprocessor,an embedded processor, a digital signal processor (DSP), a networkprocessor, a handheld processor, an application processor, aco-processor, a system on a chip (SOC), or other device to execute code.Processor 1300, in one embodiment, includes at least two cores—core 1301and 1302, which may include asymmetric cores or symmetric cores (theillustrated embodiment). However, processor 1300 may include any numberof processing elements that may be symmetric or asymmetric.

In one embodiment, a processing element refers to hardware or logic tosupport a software thread. Examples of hardware processing elementsinclude: a thread unit, a thread slot, a thread, a process unit, acontext, a context unit, a logical processor, a hardware thread, a core,and/or any other element, which is capable of holding a state for aprocessor, such as an execution state or architectural state. In otherwords, a processing element, in one embodiment, refers to any hardwarecapable of being independently associated with code, such as a softwarethread, operating system, application, or other code. A physicalprocessor (or processor socket) typically refers to an integratedcircuit, which potentially includes any number of other processingelements, such as cores or hardware threads.

A core often refers to logic located on an integrated circuit capable ofmaintaining an independent architectural state, wherein eachindependently maintained architectural state is associated with at leastsome dedicated execution resources. In contrast to cores, a hardwarethread typically refers to any logic located on an integrated circuitcapable of maintaining an independent architectural state, wherein theindependently maintained architectural states share access to executionresources. As can be seen, when certain resources are shared and othersare dedicated to an architectural state, the line between thenomenclature of a hardware thread and core overlaps. Yet often, a coreand a hardware thread are viewed by an operating system as individuallogical processors, where the operating system is able to individuallyschedule operations on each logical processor.

Physical processor 1300, as illustrated in FIG. 13, includes twocores-core 1301 and 1302. Here, core 1301 and 1302 are consideredsymmetric cores, i.e. cores with the same configurations, functionalunits, and/or logic. In another embodiment, core 1301 includes anout-of-order processor core, while core 1302 includes an in-orderprocessor core. However, cores 1301 and 1302 may be individuallyselected from any type of core, such as a native core, a softwaremanaged core, a core adapted to execute a native Instruction SetArchitecture (ISA), a core adapted to execute a translated InstructionSet Architecture (ISA), a co-designed core, or other known core. In aheterogeneous core environment (i.e. asymmetric cores), some form oftranslation, such a binary translation, may be utilized to schedule orexecute code on one or both cores. Yet to further the discussion, thefunctional units illustrated in core 1301 are described in furtherdetail below, as the units in core 1302 operate in a similar manner inthe depicted embodiment.

As depicted, core 1301 includes two hardware threads 1301 a and 1301 b,which may also be referred to as hardware thread slots 1301 a and 1301b. Therefore, software entities, such as an operating system, in oneembodiment potentially view processor 1300 as four separate processors.i.e., four logical processors or processing elements capable ofexecuting four software threads concurrently. As alluded to above, afirst thread is associated with architecture state registers 1301 a, asecond thread is associated with architecture state registers 1301 b, athird thread may be associated with architecture state registers 1302 a,and a fourth thread may be associated with architecture state registers1302 b. Here, each of the architecture state registers (1301 a, 1301 b,1302 a, and 1302 b) may be referred to as processing elements, threadslots, or thread units, as described above. As illustrated, architecturestate registers 1301 a are replicated in architecture state registers1301 b, so individual architecture states/contexts are capable of beingstored for logical processor 1301 a and logical processor 1301 b. Incore 1301, other smaller resources, such as instruction pointers andrenaming logic in allocator and renamer block 1330 may also bereplicated for threads 1301 a and 1301 b. Some resources, such asre-order buffers in reorder/retirement unit 1335, ILTB 1320, load/storebuffers, and queues may be shared through partitioning. Other resources,such as general purpose internal registers, page-table base register(s),low-level data-cache and data-TLB 1315, execution unit(s) 1340, andportions of out-of-order unit 1335 are potentially fully shared.

Processor 1300 often includes other resources, which may be fullyshared, shared through partitioning, or dedicated by/to processingelements. In FIG. 13, an embodiment of a purely exemplary processor withillustrative logical units/resources of a processor is illustrated. Notethat a processor may include, or omit, any of these functional units, aswell as include any other known functional units, logic, or firmware notdepicted. As illustrated, core 1301 includes a simplified,representative out-of-order (OOO) processor core. But an in-orderprocessor may be utilized in different embodiments. The OOO coreincludes a branch target buffer 1320 to predict branches to beexecuted/taken and an instruction-translation buffer (I-TLB) 1320 tostore address translation entries for instructions.

Core 1301 further includes decode module 1325 coupled to fetch unit 1320to decode fetched elements. Fetch logic, in one embodiment, includesindividual sequencers associated with thread slots 1301 a, 1301 b,respectively. Usually core 1301 is associated with a first ISA, whichdefines/specifies instructions executable on processor 1300. Oftenmachine code instructions that are part of the first ISA include aportion of the instruction (referred to as an opcode), whichreferences/specifies an instruction or operation to be performed. Decodelogic 1325 includes circuitry that recognizes these instructions fromtheir opcodes and passes the decoded instructions on in the pipeline forprocessing as defined by the first ISA. For example, as discussed inmore detail below decoders 1325, in one embodiment, include logicdesigned or adapted to recognize specific instructions, such astransactional instruction. As a result of the recognition by decoders1325, the architecture or core 1301 takes specific, predefined actionsto perform tasks associated with the appropriate instruction. It isimportant to note that any of the tasks, blocks, operations, and methodsdescribed herein may be performed in response to a single or multipleinstructions; some of which may be new or old instructions. Notedecoders 1326, in one embodiment, recognize the same ISA (or a subsetthereof). Alternatively, in a heterogeneous core environment, decoders1326 recognize a second ISA (either a subset of the first ISA or adistinct ISA).

In one example, allocator and renamer block 1330 includes an allocatorto reserve resources, such as register files to store instructionprocessing results. However, threads 1301 a and 1301 b are potentiallycapable of out-of-order execution, where allocator and renamer block1330 also reserves other resources, such as reorder buffers to trackinstruction results. Unit 1330 may also include a register renamer torename program/instruction reference registers to other registersinternal to processor 1300. Reorder/retirement unit 1335 includescomponents, such as the reorder buffers mentioned above, load buffers,and store buffers, to support out-of-order execution and later in-orderretirement of instructions executed out-of-order.

Scheduler and execution unit(s) block 1340, in one embodiment, includesa scheduler unit to schedule instructions/operation on execution units.For example, a floating point instruction is scheduled on a port of anexecution unit that has an available floating point execution unit.Register files associated with the execution units are also included tostore information instruction processing results. Exemplary executionunits include a floating point execution unit, an integer executionunit, a jump execution unit, a load execution unit, a store executionunit, and other known execution units.

Lower level data cache and data translation buffer (D-TLB) 1350 arecoupled to execution unit(s) 1340. The data cache is to store recentlyused/operated on elements, such as data operands, which are potentiallyheld in memory coherency states. The D-TLB is to store recentvirtual/linear to physical address translations. As a specific example,a processor may include a page table structure to break physical memoryinto a plurality of virtual pages.

Here, cores 1301 and 1302 share access to higher-level or further-outcache, such as a second level cache associated with on-chip interface1310. Note that higher-level or further-out refers to cache levelsincreasing or getting further way from the execution unit(s). In oneembodiment, higher-level cache is a last-level data cache last cache inthe memory hierarchy on processor 1300 such as a second or third leveldata cache. However, higher level cache is not so limited, as it may beassociated with or include an instruction cache. A trace cache a type ofinstruction cache instead may be coupled after decoder 1325 to storerecently decoded traces. Here, an instruction potentially refers to amacro-instruction (i.e. a general instruction recognized by thedecoders), which may decode into a number of micro-instructions(micro-operations).

In the depicted configuration, processor 1300 also includes on-chipinterface module 1310. Historically, a memory controller, which isdescribed in more detail below, has been included in a computing systemexternal to processor 1300. In this scenario, on-chip interface 1310 isto communicate with devices external to processor 1300, such as systemmemory 1375, a chipset (often including a memory controller hub toconnect to memory 1375 and an I/O controller hub to connect peripheraldevices), a memory controller hub, a northbridge, or other integratedcircuit. And in this scenario, bus 1305 may include any knowninterconnect, such as multi-drop bus, a point-to-point interconnect, aserial interconnect, a parallel bus, a coherent (e.g. cache coherent)bus, a layered protocol architecture, a differential bus, and a GTL bus.

Memory 1375 may be dedicated to processor 1300 or shared with otherdevices in a system. Common examples of types of memory 1375 includeDRAM, SRAM, non-volatile memory (NV memory), and other known storagedevices. Note that device 1380 may include a graphic accelerator,processor or card coupled to a memory controller hub, data storagecoupled to an I/O controller hub, a wireless transceiver, a flashdevice, an audio controller, a network controller, or other knowndevice.

Recently however, as more logic and devices are being integrated on asingle die, such as SOC, each of these devices may be incorporated onprocessor 1300. For example in one embodiment, a memory controller hubis on the same package and/or die with processor 1300. Here, a portionof the core (an on-core portion) 1310 includes one or more controller(s)for interfacing with other devices such as memory 1375 or a graphicsdevice 1380. The configuration including an interconnect and controllersfor interfacing with such devices is often referred to as an on-core (orun-core configuration). As an example, on-chip interface 1310 includes aring interconnect for on-chip communication and a high-speed serialpoint-to-point link 1305 for off-chip communication. Yet, in the SOCenvironment, even more devices, such as the network interface,co-processors, memory 1375, graphics processor 1380, and any other knowncomputer devices/interface may be integrated on a single die orintegrated circuit to provide small form factor with high functionalityand low power consumption.

In one embodiment, processor 1300 is capable of executing a compiler,optimization, and/or translator code 1377 to compile, translate, and/oroptimize application code 1376 to support the apparatus and methodsdescribed herein or to interface therewith. A compiler often includes aprogram or set of programs to translate source text/code into targettext/code. Usually, compilation of program/application code with acompiler is done in multiple phases and passes to transform hi-levelprogramming language code into low-level machine or assembly languagecode. Yet, single pass compilers may still be utilized for simplecompilation. A compiler may utilize any known compilation techniques andperform any known compiler operations, such as lexical analysis,preprocessing, parsing, semantic analysis, code generation, codetransformation, and code optimization.

Larger compilers often include multiple phases, but most often thesephases are included within two general phases: (1) a front-end, i.e.generally where syntactic processing, semantic processing, and sometransformation/optimization may take place, and (2) a back-end, i.e.generally where analysis, transformations, optimizations, and codegeneration takes place. Some compilers refer to a middle, whichillustrates the blurring of delineation between a front-end and back endof a compiler. As a result, reference to insertion, association,generation, or other operation of a compiler may take place in any ofthe aforementioned phases or passes, as well as any other known phasesor passes of a compiler. As an illustrative example, a compilerpotentially inserts operations, calls, functions, etc. in one or morephases of compilation, such as insertion of calls/operations in afront-end phase of compilation and then transformation of thecalls/operations into lower-level code during a transformation phase.Note that during dynamic compilation, compiler code or dynamicoptimization code may insert such operations/calls, as well as optimizethe code for execution during runtime. As a specific illustrativeexample, binary code (already compiled code) may be dynamicallyoptimized during runtime. Here, the program code may include the dynamicoptimization code, the binary code, or a combination thereof.

Similar to a compiler, a translator, such as a binary translator,translates code either statically or dynamically to optimize and/ortranslate code. Therefore, reference to execution of code, applicationcode, program code, or other software environment may refer to: (1)execution of a compiler program(s), optimization code optimizer, ortranslator either dynamically or statically, to compile program code, tomaintain software structures, to perform other operations, to optimizecode, or to translate code; (2) execution of main program code includingoperations/calls, such as application code that has beenoptimized/compiled; (3) execution of other program code, such aslibraries, associated with the main program code to maintain softwarestructures, to perform other software related operations, or to optimizecode; or (4) a combination thereof.

Referring now to FIG. 14, shown is a block diagram of an embodiment of amulticore processor. As shown in the embodiment of FIG. 14, processor1400 includes multiple domains. Specifically, a core domain 1430includes a plurality of cores 1430A-1430N, a graphics domain 1460includes one or more graphics engines having a media engine 1465, and asystem agent domain 1410.

In various embodiments, system agent domain 1410 handles power controlevents and power management, such that individual units of domains 1430and 1460 (e.g. cores and/or graphics engines) are independentlycontrollable to dynamically operate at an appropriate power mode/level(e.g. active, turbo, sleep, hibernate, deep sleep, or other AdvancedConfiguration Power Interface like state) in light of the activity (orinactivity) occurring in the given unit. Each of domains 1430 and 1460may operate at different voltage and/or power, and furthermore theindividual units within the domains each potentially operate at anindependent frequency and voltage. Note that while only shown with threedomains, understand the scope of the present invention is not limited inthis regard and additional domains may be present in other embodiments.

As shown, each core 1430 further includes low level caches in additionto various execution units and additional processing elements. Here, thevarious cores are coupled to each other and to a shared cache memorythat is formed of a plurality of units or slices of a last level cache(LLC) 1440A-1440N; these LLCs often include storage and cache controllerfunctionality and are shared amongst the cores, as well as potentiallyamong the graphics engine too.

As seen, a ring interconnect 1450 couples the cores together, andprovides interconnection between the core domain 1430, graphics domain1460 and system agent circuitry 1410, via a plurality of ring stops1452A-1452N, each at a coupling between a core and LLC slice. As seen inFIG. 14, interconnect 1450 is used to carry various information,including address information, data information, acknowledgementinformation, and snoop/invalid information. Although a ring interconnectis illustrated, any known on-die interconnect or fabric may be utilized.As an illustrative example, some of the fabrics discussed above (e.g.another on-die interconnect. On-chip System Fabric (OSF), an AdvancedMicrocontroller Bus Architecture (AMBA) interconnect, amulti-dimensional mesh fabric, or other known interconnect architecture)may be utilized in a similar fashion.

As further depicted, system agent domain 1410 includes display engine1412 which is to provide control of and an interface to an associateddisplay. System agent domain 1410 may include other units, such as: anintegrated memory controller 1420 that provides for an interface to asystem memory (e.g., a DRAM implemented with multiple DIMMs; coherencelogic 1422 to perform memory coherence operations. Multiple interfacesmay be present to enable interconnection between the processor and othercircuitry. For example, in one embodiment at least one direct mediainterface (DMI) 1416 interface is provided as well as one or more PCIe™interfaces 1414. The display engine and these interfaces typicallycouple to memory via a PCIe™ bridge 1418. Still further, to provide forcommunications between other agents, such as additional processors orother circuitry, one or more other interfaces may be provided.

Referring now to FIG. 15, shown is a block diagram of a representativecore; specifically, logical blocks of a back-end of a core, such as core1430 from FIG. 14. In general, the structure shown in FIG. 15 includesan out-of-order processor that has a front end unit 1570 used to fetchincoming instructions, perform various processing (e.g. caching,decoding, branch predicting, etc.) and passing instructions/operationsalong to an out-of-order (OOO) engine 1580. OOO engine 1580 performsfurther processing on decoded instructions.

Specifically in the embodiment of FIG. 15, out-of-order engine 1580includes an allocate unit 1582 to receive decoded instructions, whichmay be in the form of one or more micro-instructions or uops, from frontend unit 1570, and allocate them to appropriate resources such asregisters and so forth. Next, the instructions are provided to areservation station 1584, which reserves resources and schedules themfor execution on one of a plurality of execution units 1586A-1586N.Various types of execution units may be present, including, for example,arithmetic logic units (ALUs), load and store units, vector processingunits (VPUs), floating point execution units, among others. Results fromthese different execution units are provided to a reorder buffer (ROB)1588, which take unordered results and return them to correct programorder.

Still referring to FIG. 15, note that both front end unit 1570 andout-of-order engine 1580 are coupled to different levels of a memoryhierarchy. Specifically shown is an instruction level cache 1572, thatin turn couples to a mid-level cache 1576, that in turn couples to alast level cache 1595. In one embodiment, last level cache 1595 isimplemented in an on-chip (sometimes referred to as uncore) unit 1590.As an example, unit 1590 is similar to system agent 1410 of FIG. 14. Asdiscussed above, uncore 1590 communicates with system memory 1599,which, in the illustrated embodiment, is implemented via ED RAM. Notealso that the various execution units 1586 within out-of-order engine1580 are in communication with a first level cache 1574 that also is incommunication with mid-level cache 1576. Note also that additional cores1530N−2-1530N can couple to LLC 1595. Although shown at this high levelin the embodiment of FIG. 15, understand that various alterations andadditional components may be present.

Turning to FIG. 16, a block diagram of an exemplary computer systemformed with a processor that includes execution units to execute aninstruction, where one or more of the interconnects implement one ormore features in accordance with one embodiment of the present inventionis illustrated. System 1600 includes a component, such as a processor1602 to employ execution units including logic to perform algorithms forprocess data, in accordance with the present invention, such as in theembodiment described herein. System 1600 is representative of processingsystems based on the PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™and/or StrongARM™ microprocessors, although other systems (including PCshaving other microprocessors, engineering workstations, set-top boxesand the like) may also be used. In one embodiment, sample system 1600executes a version of the WINDOWS™ operating system available fromMicrosoft Corporation of Redmond, Wash., although other operatingsystems (UNIX and Linux for example), embedded software, and/orgraphical user interfaces, may also be used. Thus, embodiments of thepresent invention are not limited to any specific combination ofhardware circuitry and software.

Embodiments are not limited to computer systems. Alternative embodimentsof the present invention can be used in other devices such as handhelddevices and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet Protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Embeddedapplications can include a micro controller, a digital signal processor(DSP), system on a chip, network computers (NetPC), set-top boxes,network hubs, wide area network (WAN) switches, or any other system thatcan perform one or more instructions in accordance with at least oneembodiment.

In this illustrated embodiment, processor 1602 includes one or moreexecution units 1608 to implement an algorithm that is to perform atleast one instruction. One embodiment may be described in the context ofa single processor desktop or server system, but alternative embodimentsmay be included in a multiprocessor system. System 1600 is an example ofa ‘hub’ system architecture. The computer system 1600 includes aprocessor 1602 to process data signals. The processor 1602, as oneillustrative example, includes a complex instruction set computer (CISC)microprocessor, a reduced instruction set computing (RISC)microprocessor, a very long instruction word (VLIW) microprocessor, aprocessor implementing a combination of instruction sets, or any otherprocessor device, such as a digital signal processor, for example. Theprocessor 1602 is coupled to a processor bus 1610 that transmits datasignals between the processor 1602 and other components in the system1600. The elements of system 1600 (e.g. graphics accelerator 1612,memory controller hub 1616, memory 1620, I/O controller hub 1624,wireless transceiver 1626, Flash BIOS 1628, Network controller 1634,Audio controller 1636, Serial expansion port 1638, I/O controller 1640,etc.) perform their conventional functions that are well known to thosefamiliar with the art.

In one embodiment, the processor 1602 includes a Level 1 (L1) internalcache memory 1604. Depending on the architecture, the processor 1602 mayhave a single internal cache or multiple levels of internal caches.Other embodiments include a combination of both internal and externalcaches depending on the particular implementation and needs. Registerfile 1606 is to store different types of data in various registersincluding integer registers, floating point registers, vector registers,banked registers, shadow registers, checkpoint registers, statusregisters, and instruction pointer register.

Execution unit 1608, including logic to perform integer and floatingpoint operations, also resides in the processor 1602. The processor1602, in one embodiment, includes a microcode (ucode) ROM to storemicrocode, which when executed, is to perform algorithms for certainmacroinstructions or handle complex scenarios. Here, microcode ispotentially updateable to handle logic bugs/fixes for processor 1602.For one embodiment, execution unit 1608 includes logic to handle apacked instruction set 1609. By including the packed instruction set1609 in the instruction set of a general-purpose processor 1602, alongwith associated circuitry to execute the instructions, the operationsused by many multimedia applications may be performed using packed datain a general-purpose processor 1602. Thus, many multimedia applicationsare accelerated and executed more efficiently by using the full width ofa processor's data bus for performing operations on packed data. Thispotentially eliminates the need to transfer smaller units of data acrossthe processor's data bus to perform one or more operations, one dataelement at a time.

Alternate embodiments of an execution unit 1608 may also be used inmicro controllers, embedded processors, graphics devices, DSPs, andother types of logic circuits. System 1600 includes a memory 1620.Memory 1620 includes a dynamic random access memory (DRAM) device, astatic random access memory (SRAM) device, flash memory device, or othermemory device. Memory 1620 stores instructions and/or data representedby data signals that are to be executed by the processor 1602.

Note that any of the aforementioned features or aspects of the inventionmay be utilized on one or more interconnect illustrated in FIG. 16. Forexample, an on-die interconnect (ODI), which is not shown, for couplinginternal units of processor 1602 implements one or more aspects of theinvention described above. Or the invention is associated with aprocessor bus 1610 (e.g. other known high performance computinginterconnect), a high bandwidth memory path 1618 to memory 1620, apoint-to-point link to graphics accelerator 1612 (e.g. a PeripheralComponent Interconnect express (PCIe) compliant fabric), a controllerhub interconnect 1622, an I/O or other interconnect (e.g. USB, PCI,PCIe) for coupling the other illustrated components. Some examples ofsuch components include the audio controller 1636, firmware hub (flashBIOS) 1628, wireless transceiver 1626, data storage 1624, legacy I/Ocontroller 1610 containing user input and keyboard interfaces 1642, aserial expansion port 1638 such as Universal Serial Bus (USB), and anetwork controller 1634. The data storage device 1624 can comprise ahard disk drive, a floppy disk drive, a CD-ROM device, a flash memorydevice, or other mass storage device.

Referring now to FIG. 17, shown is a block diagram of a second system1700 in accordance with an embodiment of the present invention. As shownin FIG. 17, multiprocessor system 1700 is a point-to-point interconnectsystem, and includes a first processor 1770 and a second processor 1780coupled via a point-to-point interconnect 1750. Each of processors 1770and 1780 may be some version of a processor. In one embodiment, 1752 and1754 are part of a serial, point-to-point coherent interconnect fabric,such as a high-performance architecture. As a result, the invention maybe implemented within the QPI architecture.

While shown with only two processors 1770, 1780, it is to be understoodthat the scope of the present invention is not so limited. In otherembodiments, one or more additional processors may be present in a givenprocessor.

Processors 1770 and 1780 are shown including integrated memorycontroller units 1772 and 1782, respectively. Processor 1770 alsoincludes as part of its bus controller units point-to-point (P-P)interfaces 1776 and 1778; similarly, second processor 1780 includes P-Pinterfaces 1786 and 1788. Processors 1770, 1780 may exchange informationvia a point-to-point (P-P) interface 1750 using P-P interface circuits1778, 1788. As shown in FIG. 17, IMCs 1772 and 1782 couple theprocessors to respective memories, namely a memory 1732 and a memory1734, which may be portions of main memory locally attached to therespective processors.

Processors 1770, 1780 each exchange information with a chipset 1790 viaindividual P-P interfaces 1752, 1754 using point to point interfacecircuits 1776, 1794, 1786, 1798. Chipset 1790 also exchanges informationwith a high-performance graphics circuit 1738 via an interface circuit1792 along a high-performance graphics interconnect 1739.

A shared cache (not shown) may be included in either processor oroutside of both processors; yet connected with the processors via P-Pinterconnect, such that either or both processors' local cacheinformation may be stored in the shared cache if a processor is placedinto a low power mode.

Chipset 1790 may be coupled to a first bus 1716 via an interface 1796.In one embodiment, first bus 1716 may be a Peripheral ComponentInterconnect (PCI) bus, or a bus such as a PCI Express bus or anotherthird generation I/O interconnect bus, although the scope of the presentinvention is not so limited.

As shown in FIG. 17, various I/O devices 1716 are coupled to first bus1716, along with a bus bridge 1718 which couples first bus 1716 to asecond bus 1720. In one embodiment, second bus 1720 includes a low pincount (LPC) bus. Various devices are coupled to second bus 1720including, for example, a keyboard and/or mouse 1722, communicationdevices 1727 and a storage unit 1728 such as a disk drive or other massstorage device which often includes instructions/code and data 1730, inone embodiment. Further, an audio I/O 1724 is shown coupled to secondbus 1720. Note that other architectures are possible, where the includedcomponents and interconnect architectures vary. For example, instead ofthe point-to-point architecture of FIG. 17, a system may implement amulti-drop bus or other such architecture.

Turning next to FIG. 18, an embodiment of a system on-chip (SOC) designin accordance with the inventions is depicted. As a specificillustrative example, SOC 1800 is included in user equipment (UE). Inone embodiment, UE refers to any device to be used by an end-user tocommunicate, such as a hand-held phone, smartphone, tablet, ultra-thinnotebook, notebook with broadband adapter, or any other similarcommunication device. Often a UE connects to a base station or node,which potentially corresponds in nature to a mobile station (MS) in aGSM network.

Here, SOC 1800 includes 2 cores—1806 and 1807. Similar to the discussionabove, cores 1806 and 1807 may conform to an Instruction SetArchitecture, such as an Intel® Architecture Core™-based processor, anAdvanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, anARM-based processor design, or a customer thereof, as well as theirlicensees or adopters. Cores 1806 and 1807 are coupled to cache control1808 that is associated with bus interface unit 1809 and L2 cache 1811to communicate with other parts of system 1800. Interconnect 1810includes an on-chip interconnect, such as an IOSF, AMBA, or otherinterconnect discussed above, which potentially implements one or moreaspects of described herein.

Interconnect 1810 provides communication channels to the othercomponents, such as a Subscriber Identity Module (SIM) 1830 to interfacewith a SIM card, a boot rom 1835 to hold boot code for execution bycores 1806 and 1807 to initialize and boot SOC 1800, a SDRAM controller1840 to interface with external memory (e.g. DRAM 1860), a flashcontroller 1845 to interface with non-volatile memory (e.g. Flash 1865),a peripheral control 1850 (e.g. Serial Peripheral Interface) tointerface with peripherals, video codecs 1820 and Video interface 1825to display and receive input (e.g. touch enabled input), GPU 1815 toperform graphics related computations, etc. Any of these interfaces mayincorporate aspects of the invention described herein.

In addition, the system illustrates peripherals for communication, suchas a Bluetooth module 1870, 3G modem 1875, GPS 1885, and WiFi 1885. Noteas stated above, a UE includes a radio for communication. As a result,these peripheral communication modules are not all required. However, ina UE some form a radio for external communication is to be included.

While the present invention has been described with respect to a limitednumber of embodiments, those skilled in the art will appreciate numerousmodifications and variations therefrom. It is intended that the appendedclaims cover all such modifications and variations as fall within thetrue spirit and scope of this present invention.

A design may go through various stages, from creation to simulation tofabrication. Data representing a design may represent the design in anumber of manners. First, as is useful in simulations, the hardware maybe represented using a hardware description language or anotherfunctional description language. Additionally, a circuit level modelwith logic and/or transistor gates may be produced at some stages of thedesign process. Furthermore, most designs, at some stage, reach a levelof data representing the physical placement of various devices in thehardware model. In the case where conventional semiconductor fabricationtechniques are used, the data representing the hardware model may be thedata specifying the presence or absence of various features on differentmask layers for masks used to produce the integrated circuit. In anyrepresentation of the design, the data may be stored in any form of amachine readable medium. A memory or a magnetic or optical storage suchas a disc may be the machine readable medium to store informationtransmitted via optical or electrical wave modulated or otherwisegenerated to transmit such information. When an electrical carrier waveindicating or carrying the code or design is transmitted, to the extentthat copying, buffering, or re-transmission of the electrical signal isperformed, a new copy is made. Thus, a communication provider or anetwork provider may store on a tangible, machine-readable medium, atleast temporarily, an article, such as information encoded into acarrier wave, embodying techniques of embodiments of the presentinvention.

A module as used herein refers to any combination of hardware, software,and/or firmware. As an example, a module includes hardware, such as amicro-controller, associated with a non-transitory medium to store codeadapted to be executed by the micro-controller. Therefore, reference toa module, in one embodiment, refers to the hardware, which isspecifically configured to recognize and/or execute the code to be heldon a non-transitory medium. Furthermore, in another embodiment, use of amodule refers to the non-transitory medium including the code, which isspecifically adapted to be executed by the microcontroller to performpredetermined operations. And as can be inferred, in yet anotherembodiment, the term module (in this example) may refer to thecombination of the microcontroller and the non-transitory medium. Oftenmodule boundaries that are illustrated as separate commonly vary andpotentially overlap. For example, a first and a second module may sharehardware, software, firmware, or a combination thereof, whilepotentially retaining some independent hardware, software, or firmware.In one embodiment, use of the term logic includes hardware, such astransistors, registers, or other hardware, such as programmable logicdevices.

Use of the phrase ‘configured to,’ in one embodiment, refers toarranging, putting together, manufacturing, offering to sell, importingand/or designing an apparatus, hardware, logic, or element to perform adesignated or determined task. In this example, an apparatus or elementthereof that is not operating is still ‘configured to’ perform adesignated task if it is designed, coupled, and/or interconnected toperform said designated task. As a purely illustrative example, a logicgate may provide a 0 or a 1 during operation. But a logic gate‘configured to’ provide an enable signal to a clock does not includeevery potential logic gate that may provide a 1 or 0. Instead, the logicgate is one coupled in some manner that during operation the 1 or 0output is to enable the clock. Note once again that use of the term‘configured to’ does not require operation, but instead focus on thelatent state of an apparatus, hardware, and/or element, where in thelatent state the apparatus, hardware, and/or element is designed toperform a particular task when the apparatus, hardware, and/or elementis operating.

Furthermore, use of the phrases ‘to,’ ‘capable of/to,’ and or ‘operableto,’ in one embodiment, refers to some apparatus, logic, hardware,and/or element designed in such a way to enable use of the apparatus,logic, hardware, and/or element in a specified manner. Note as abovethat use of to, capable to, or operable to, in one embodiment, refers tothe latent state of an apparatus, logic, hardware, and/or element, wherethe apparatus, logic, hardware, and/or element is not operating but isdesigned in such a manner to enable use of an apparatus in a specifiedmanner.

A value, as used herein, includes any known representation of a number,a state, a logical state, or a binary logical state. Often, the use oflogic levels, logic values, or logical values is also referred to as 1'sand 0's, which simply represents binary logic states. For example, a 1refers to a high logic level and 0 refers to a low logic level. In oneembodiment, a storage cell, such as a transistor or flash cell, may becapable of holding a single logical value or multiple logical values.However, other representations of values in computer systems have beenused. For example the decimal number ten may also be represented as abinary value of 1010 and a hexadecimal letter A. Therefore, a valueincludes any representation of information capable of being held in acomputer system.

Moreover, states may be represented by values or portions of values. Asan example, a first value, such as a logical one, may represent adefault or initial state, while a second value, such as a logical zero,may represent a non-default state. In addition, the terms reset and set,in one embodiment, refer to a default and an updated value or state,respectively. For example, a default value potentially includes a highlogical value, i.e. reset, while an updated value potentially includes alow logical value, i.e. set. Note that any combination of values may beutilized to represent any number of states.

The embodiments of methods, hardware, software, firmware or code setforth above may be implemented via instructions or code stored on amachine-accessible, machine readable, computer accessible, or computerreadable medium which are executable by a processing element. Anon-transitory machine-accessible/readable medium includes any mechanismthat provides (i.e., stores and/or transmits) information in a formreadable by a machine, such as a computer or electronic system. Forexample, a non-transitory machine-accessible medium includesrandom-access memory (RAM), such as static RAM (SRAM) or dynamic RAM(DRAM); ROM; magnetic or optical storage medium; flash memory devices;electrical storage devices; optical storage devices; acoustical storagedevices; other form of storage devices for holding information receivedfrom transitory (propagated) signals (e.g., carrier waves, infraredsignals, digital signals); etc, which are to be distinguished from thenon-transitory mediums that may receive information there from.

Instructions used to program logic to perform embodiments of theinvention may be stored within a memory in the system, such as DRAM,cache, flash memory, or other storage. Furthermore, the instructions canbe distributed via a network or by way of other computer readable media.Thus a machine-readable medium may include any mechanism for storing ortransmitting information in a form readable by a machine (e.g., acomputer), but is not limited to, floppy diskettes, optical disks,Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks,Read-Only Memory (ROMs), Random Access Memory (RAM), ErasableProgrammable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), magnetic or optical cards, flashmemory, or a tangible, machine-readable storage used in the transmissionof information over the Internet via electrical, optical, acoustical orother forms of propagated signals (e.g., carrier waves, infraredsignals, digital signals, etc.). Accordingly, the computer-readablemedium includes any type of tangible machine-readable medium suitablefor storing or transmitting electronic instructions or information in aform readable by a machine (e.g., a computer).

The following examples pertain to embodiments in accordance with thisSpecification. One or more embodiments may provide an apparatus, asystem, a machine readable storage, a machine readable medium, and amethod to embed a periodic control window in a link layer data stream tobe sent over a serial data link, wherein the control window isconfigured to provide physical layer information including informationfor use in initiating state transitions on the data link.

In at least one example, the data stream comprises a series of flits.

In at least one example, the link layer data stream is sent during alink transmitting state of the data link.

One or more examples can further provide identifying a particularcontrol window in the data stream and send reset data to a deviceconnected to the data link during the particular control window, whereinthe reset data is to communicate an attempt to enter a reset state fromthe link transmitting state.

One or more examples can further provide generating a supersequenceassociated with the reset state and send the supersequence to thedevice.

One or more examples can further provide identifying a particularcontrol window in the data stream and send link width transition data toa device connected to the data link during the particular controlwindow, wherein the link width transition data is to communicate anattempt to change the number of active lanes on the link.

In at least one example, the number of lanes are to be reduced from anoriginal number to a new number, wherein reducing the number of activelanes is associated with entry into a partial width link transmittingstate.

One or more examples can further provide identifying a subsequentcontrol window in the data stream and send partial width state exit datato the device during the subsequent control window, wherein the partialwidth state exit data is to communicate an attempt to return the numberof active lanes to the original number.

One or more examples can further provide identifying a particularcontrol window in the data stream and send low power data to a deviceconnected to the data link during the particular control window, whereinthe low power data is to communicate an attempt to enter a low powerstate from the link transmitting state.

In at least one example, control windows are embedded according to adefined control interval and devices connected to the data link are tosynchronize the state transition with an end of a corresponding controlinterval.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream wherein the data stream is to include alternatingtransmitting intervals and control intervals, wherein link layer flitsare to be sent during the transmitting intervals and the controlintervals are to provide opportunities to send physical layer controlinformation, identify control data to be included in a particular one ofthe control intervals, the control data to indicate an attempted entryinto a particular state from a first state, wherein the data stream isto be received in the first state, and facilitate transition into theparticular state.

In at least one example, the particular state comprises a reset state.

In at least one example, facilitating transition into the particularstate includes sending an acknowledgement of the attempted entry intothe particular state.

In at least one example, the acknowledgement is sent within the controlinterval.

In at least one example, the data stream is sent over a serial data linkincluding a plurality of active lanes and the particular state comprisesa partial width state, wherein at least a subset of lanes included inthe plurality of active lanes are to become idle in the partial widthstate.

One or more examples can further provide identifying subsequent dataincluded in a subsequent one of the control intervals, the subsequentdata indicating an attempt to exit the partial width state andreactivate the idle lanes.

In at least one example, the particular state comprises a low powertransmitting state.

In at least one example, the data stream is received over a serial datalink including a plurality of active lanes and the particular statecomprises a partial width state, wherein at least a subset of lanesincluded in the plurality of active lanes are to become idle in thepartial width state.

In at least one example, the particular state comprises a reset state.

In at least one example, the physical layer control informationdescribes an error of the data link.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to embed aclock signal in data to be communicated from a first device over aserial data link including a plurality of lanes, and transition from afirst link transmitting state that is to use a first number of theplurality of lanes to a second link transmitting state that is to use asecond number of the plurality of lanes.

In at least one example, the second number of lanes is greater than thefirst number of lanes.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state includes sending a partialwidth state exit supersequence comprising one or more instances of asequence including an electrical ordered set (EOS) and a plurality ofinstances of a training sequence.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes sending aninitial EOS preceding the partial width state exit supersequence.

In at least one example, null flits are to be sent on active lanesduring the sending of the initial EOS.

In at least one example, the training sequence comprises an unscrambledfast training sequence (FTS).

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes using thepartial width state exit supersequence to initialize at least a portionof idle lanes included in the plurality of lanes.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes sending astart of data sequence (SDS) following initialization of the portion ofthe idle lanes.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes sending apartial FTS (FTSp) following the sending of the SDS.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state further includes receivingan acknowledgement of the transition, wherein the acknowledgementincludes the partial width state exit supersequence.

In at least one example, transitioning from the first link transmittingstate to the second link transmitting state includes sending an in-bandsignal over the data link to the second device.

In at least one example, the first number of lanes is greater than thesecond number of lanes.

In at least one example, the data comprises a datastream includingalternating transmitting intervals and control intervals, and the signalis sent within a particular control interval and indicates thetransition from the first link transmitting state to the second linktransmitting state.

In at least one example, the transition from the first link transmittingstate to the second link transmitting state is to be synchronized withend of a particular transmitting interval immediately following theparticular control interval.

In at least one example, the transition is based on a request of a powercontrol unit.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream wherein the data stream is to include alternatingtransmitting intervals and control intervals, wherein the controlintervals are to provide opportunities to send physical layer controlinformation, and the data stream is to be sent over a serial data linkthat is to include active lanes and inactive lanes, identify controldata included in a particular one of the control intervals, wherein thedata is to indicate an attempt to activate at least a portion of theinactive lanes of the link, and facilitate activation of the portion ofthe inactive lanes.

In at least one example, the data stream is received while the data linkis in a partial width state and the control data is to indicate anattempt to exit the partial width state.

In at least one example, facilitating activation of the portion of theinactive lanes is to include receiving a supersequence that is toindicate the attempt to activate the portion of the inactive lanes.

In at least one example, the supersequence is to comprise one or moreinstances of a sequence including an electric idle exit ordered set(EIEOS) and a plurality of instances of a training sequence.

In at least one example, facilitating activation of the portion of theinactive lanes includes sending at least one initial EIEOS toimmediately precede the supersequence.

In at least one example, null flits are to be sent on the active lanesduring the sending of the initial EIEOS.

In at least one example, the training sequence comprises an unscrambledfast training sequence (FTS).

In at least one example, facilitating activation of the portion of theinactive lanes further includes using the supersequence to initializethe portion of the inactive lanes.

In at least one example, facilitating activation of the portion of theinactive lanes further includes receiving a start of data sequence (SDS)following initialization of the portion of the inactive lanes.

In at least one example, facilitating activation of the portion of theinactive lanes further includes receiving a partial FTS (FTSp) followingthe SDS.

In at least one example, facilitating activation of the portion of theinactive lanes further includes acknowledging the attempt by echoing thesupersequence.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive adata stream wherein the data stream is to include alternatingtransmitting intervals and control intervals, wherein link layer flitsare to be sent during the transmitting intervals and the controlintervals are to provide opportunities to send physical layer controlinformation, identify control data that indicates an attempted entryinto a low power state from a link transmitting state, wherein the datastream is to be received in the link transmitting state, and transitioninto the low power state.

In at least one example, the control data comprises a predefined code.

In at least one example, transitioning into the low power state includesechoing the predefined code in a subsequent control interval.

In at least one example, transitioning into the low power state includesreceiving a supersequence indicating the transition to the low powerstate.

In at least one example, transitioning into the low power state furtherincludes echoing the supersequence.

In at least one example, the supersequence comprises one or moreinstances of a sequence including an electrical ordered set (EOS)followed by a predetermined number of instances of a training sequence.

In at least one example, the EOS comprises an electrical idle electricalordered set (EIEOS).

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to identify aparticular instance of a periodic control interval to be embedded in adata stream on a serial data link during a link transmitting state, sendstate transition data during the particular instance of the controlinterval to a device, wherein the state transition data is to indicatean attempt to enter a low power state, and transition into the low powerstate.

One or more examples can further provide receiving an acknowledgementfrom the device, the acknowledgement comprising the state transitiondata.

In at least one example, the acknowledgement is to coincide with a nextperiodic control interval.

In at least one example, transitioning into the low power state includessending a supersequence to the device indicating the transition to thelow power state.

In at least one example, transitioning into the low power state furtherincludes receiving a repeated instance of the supersequence from thedevice.

In at least one example, the supersequence comprises one or moreinstances of a sequence including an electrical ordered set (EOS)followed by a predetermined number of instances of a training sequence.

In at least one example, the EOS comprises an electric idle exit orderedset (EIEOS).

In at least one example, transition into the low power state is based ona request of a power control unit.

One or more examples can further provide initiating a transition fromthe low power state to the link transmitting state.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a serial, differential link, the PHY toperiodically issue a blocking link state (BLS), the BLS request to causean agent to enter a BLS to hold off link layer flit transmission for aduration, wherein the PHY is to utilize the serial, differential linkduring the duration for PHY associated tasks.

In at least one example, the PHY is to utilize the serial, differentiallink during the duration for PHY associated tasks comprises sending oneor more messages of a priority message list including a no-op, reset,in-band reset, entry into low power state, entry into partial widthstate, entry into other PHY state, etc.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a link, the link including a first number oflanes, wherein the PHY is to transmit flits over the first number oflanes in a full width transmitting link state, and wherein the PHY is totransmit flits over a second number of lanes, which is less than thefirst number of lanes, in a partial-width transmitting link state.

In at least one example, the PHY is to utilize a blocking link state toenter the partial-width transmitting link state from the blocking linkstate.

In at least one example, the flits have the same size when transmittingover the first number of lanes and the second number of lanes.

In at least one example, the PHY utilizes an embedded clock fortransmitting over the first number of lanes and over the second numberof lanes.

In at least one example, the PHY utilizes an embedded clock fortransmitting over the first number of lanes and a forwarded clock fortransmitting over the second number of lanes.

Reference throughout this specification to “one embodiment” or “anembodiment” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment of the present invention. Thus, theappearances of the phrases “in one embodiment” or “in an embodiment” invarious places throughout this specification are not necessarily allreferring to the same embodiment. Furthermore, the particular features,structures, or characteristics may be combined in any suitable manner inone or more embodiments.

In the foregoing specification, a detailed description has been givenwith reference to specific exemplary embodiments. It will, however, beevident that various modifications and changes may be made theretowithout departing from the broader spirit and scope of the invention asset forth in the appended claims. The specification and drawings are,accordingly, to be regarded in an illustrative sense rather than arestrictive sense. Furthermore, the foregoing use of embodiment andother exemplarily language does not necessarily refer to the sameembodiment or the same example, but may refer to different and distinctembodiments, as well as potentially the same embodiment.

1. An apparatus comprising: a layered stack comprising link layer logicand physical layer logic, wherein the physical layer logic is to embed aperiodic control window in a link layer data stream to be sent over aserial data link, wherein the control window is configured to providephysical layer information including information for use in initiatingstate transitions on the data link.
 2. The apparatus of claim 1, whereinthe data stream comprises a series of flits.
 3. The apparatus of claim1, wherein the link layer data stream is sent during a link transmittingstate of the data link.
 4. The apparatus of claim 3, wherein thephysical layer logic is to further identify a particular control windowin the data stream and send reset data to a device connected to the datalink during the particular control window, wherein the reset data is tocommunicate an attempt to enter a reset state from the link transmittingstate.
 5. The apparatus of claim 4, wherein the physical layer logic isto further generate a supersequence associated with the reset state andsend the supersequence to the device.
 6. The apparatus of claim 3,wherein the physical layer logic is to further identify a particularcontrol window in the data stream and send link width transition data toa device connected to the data link during the particular controlwindow, wherein the link width transition data is to communicate anattempt to change the number of active lanes on the link.
 7. Theapparatus of claim 6, wherein the number of lanes are to be reduced froman original number to a new number, wherein reducing the number ofactive lanes is associated with entry into a partial width linktransmitting state.
 8. The apparatus of claim 7, wherein the physicallayer logic is to further identify a subsequent control window in thedata stream and send partial width state exit data to the device duringthe subsequent control window, wherein the partial width state exit datais to communicate an attempt to return the number of active lanes to theoriginal number.
 9. The apparatus of claim 3, wherein the physical layerlogic is to further identify a particular control window in the datastream and send low power data to a device connected to the data linkduring the particular control window, wherein the low power data is tocommunicate an attempt to enter a low power state from the linktransmitting state.
 10. The apparatus of claim 1, wherein controlwindows are embedded according to a defined control interval and devicesconnected to the data link are to synchronize the state transition withan end of a corresponding control interval.
 11. An apparatus comprising:a layered stack comprising physical layer logic, link layer logic, andprotocol layer logic, wherein the physical layer logic is to: receive adata stream wherein the data stream is to include alternatingtransmitting intervals and control intervals, wherein link layer flitsare to be sent during the transmitting intervals and the controlintervals are to provide opportunities to send physical layer controlinformation; identify control data to be included in a particular one ofthe control intervals, the control data to indicate an attempted entryinto a particular state from a first state, wherein the data stream isto be received in the first state; and facilitate transition into theparticular state.
 12. The apparatus of claim 11, wherein the particularstate comprises a reset state.
 13. The apparatus of claim 12, whereinfacilitating transition into the particular state includes sending anacknowledgement of the attempted entry into the particular state. 14.The apparatus of claim 13, wherein the acknowledgement is sent withinthe control interval.
 15. The apparatus of claim 11, wherein the datastream is sent over a serial data link including a plurality of activelanes and the particular state comprises a partial width state, whereinat least a subset of lanes included in the plurality of active lanes areto become idle in the partial width state.
 16. The apparatus of claim15, wherein the physical layer logic is further to identify subsequentdata included in a subsequent one of the control intervals, thesubsequent data indicating an attempt to exit the partial width stateand reactivate the idle lanes.
 17. The apparatus of claim 11, whereinthe particular state comprises a low power transmitting state.
 18. Amethod comprising: receiving a data stream wherein the data streamincludes alternating transmitting intervals and control intervals,wherein link layer flits are sent during the transmitting intervals andthe control intervals provide opportunities to send physical layercontrol information; identifying control data included in a particularone of the control intervals, the control data indicating an attemptedentry into a particular state from a first state, wherein the datastream is received in the first state; and facilitating transition intothe particular state.
 19. The method of claim 18, wherein the datastream is received over a serial data link including a plurality ofactive lanes and the particular state comprises a partial width state,wherein at least a subset of lanes included in the plurality of activelanes are to become idle in the partial width state.
 20. The method ofclaim 18, wherein the particular state comprises a reset state.
 21. Themethod of claim 18, wherein the physical layer control informationdescribes an error of the data link.
 22. A system comprising: a firstdevice; and a second device a second device communicatively coupled tothe first device using a serial data link, the second device including aphysical layer module executed by at least one processor to: receive adata stream wherein the data stream includes alternating transmittingintervals and control intervals, wherein link layer flits are sentduring the transmitting intervals and the control intervals provideopportunities to send physical layer control information; identifycontrol data included in a particular one of the control intervals, thecontrol data indicating an attempted entry into a particular state froma first state, wherein the data stream is received in the first state;and facilitate transition into the particular state.
 23. The system ofclaim 22, wherein the first device comprises a microprocessor.
 24. Thesystem of claim 23, wherein the second device comprises a secondmicroprocessor.
 25. The system of claim 23, wherein the second devicecomprises a graphics accelerator.
 26. The system of claim 22, whereinthe first device includes physical layer logic to: send the control datain the particular control interval; and transition to the particularstate.
 27. The system of claim 22, wherein the particular state isincluded in a plurality of states of a link training state machine.28-76. (canceled)